2013-08-02 129 views
0

我想在Appliation开始之前将光标更改为沙漏 当您在eclipse中单击“运行”时,它应该显示小时玻璃。我的应用程序需要4秒的时间来加载Swing应用程序,其中大约需要3秒来获取与系统相关的属性。 我尝试使用setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));。但没有太多的改进措施在应用程序启动Java swing之前等待光标

任何人都可以在这方面

这是我的代码

public static void main(String args[]){ 

    String os = System.getProperty("os.name").trim().toLowerCase(); 
     if (!os.equals("windows server 2008 r2") && 
      !os.equals("windows server 2012")) { 
     JOptionPane.showMessageDialog(null, TPDI18N.formatWithBundle(
      SsUtils.SS, "ss.error.notSupportedPlatform", os), 
      TPDI18N.getString("common.error"), JOptionPane.ERROR_MESSAGE); 
     System.exit(0); 
     } 
    System.setProperty("sun.awt.exception.handler", 
     "somepackage"); 

    ThreadGroup threadGroup = new ThreadGroup("My title") { 
     @Override 
     public void uncaughtException(Thread t, Throwable e) { 
      if (!(e instanceof ThreadDeath)) { 
       ErrorUtil.logErrorAndExit(e); 
      } 
     } 
    }; 

    Runnable r = new Runnable() { 
     public void run() { 

      startApplication(); 
     } 
    }; 
    new Thread(threadGroup, r).start(); 

} 
    private static void startApplication() { 
    DirUtil.setAppDir(AppLICATION); 
    MyManager.startGUI(new String[0], LOG4J_SS_CONFIG);//Maximum time is consumed at this place 
    DirUtil.setHelpTopicDirectory(IMC_HELP_DIR); 
    WindowsConfigurator.makeInstance(TPDDirUtil.makeLogDir()); 
    MyClassManager main = new MyClassManager(); 
    main.setSize(new Dimension(1000, 720)); 
    centerWindow(main); 
    main.setVisible(true); 
    main.setMinimumSize(main.getSize()); 

} 

public MyClassManager() { 
    super(TPDI18N.getString(Utils.AA, "aa.title")); 
    //here creation of panel takes place 
    --- 
    -- 
    } 
+1

您发布的代码不能编译也不能运行,因此不符合[sscce](http://sscce.org)标准,使我们很难提供帮助。考虑创建一个新的程序来显示你的问题,并且不做任何事情 - 它试图创建一个等待光标,它延迟加载几秒钟(一个Thread.sleep(...)将很好地工作),它编译和它运行。 –

+1

可能...,也许使用SplashScreen,更多在Oracle教程 – mKorbel

回答

3

帮助可能是你的问题是,你加载代码运行在Swing事件线程,防止您的光标变化被看到。一种解决方案是使用SwingWorker在后台线程中执行加载代码,释放Swing事件分派线程以完成其工作。

+0

你可以给一个示例程序 – user2629457

+0

@ user2629457:肯定:请看看这里:[课程:Swing中的并发](http://docs.oracle.com)。 COM/JavaSE的/教程/ uiswing /并发/ index.html的)。您也可以使用代码在本网站上搜索我的许多SwingWorker答案。有关更具体的帮助,请发布代码和有关您问题的更多具体信息。 –

+0

@ user2629457:但严重的是,如果您没有发布可编译和可运行的代码示例,则要求提供“示例程序”有点过分。请考虑创建一个小的[sscce](http://sscce.org),我会很乐意尝试帮助你并对其进行修改,但由于你是一个寻求免费帮助的人,所以首要的努力应该是是你的。 –

相关问题