2013-08-02 126 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),我會很樂意嘗試幫助你並對其進行修改,但由於你是一個尋求免費幫助的人,所以首要的努力應該是是你的。 –

相關問題