簡體   English   中英

在初始化主GUI時可見JProgressBar

[英]Visible JProgressBar while initializing main GUI

我正在為我正在開發的項目構建一個相當復雜的GUI。 重要的是,它包含(除此之外)具有12個以上復雜GUI組件窗格的JTabbedPane

我正在嘗試做的是在我實例化這些窗格時創建一個JProgressBar (創建和配置;做所有事情都不能實際顯示)。 實際上,我希望得到類似Eclipse啟動畫面的最終結果:

在此輸入圖像描述

這是(更新為包含SplashScreen)偽代碼,我正在嘗試做什么:

ProgramManager:
private setupGUI() {
    mainGUI = new MainGUI(); // only instantiates internal JFrame field
    mainGUI.setup();
}

MainGUI:
public void setup() {
    //create and configure progress bar
    final SplashScreen ss = SplashScreen.getSplashScreen();
    JProgressBar jpb = new JProgressBar(){
        Graphics g = ss.createGraphics();
        @Override
        public void paint(Graphics pG) {
            // TODO Auto-generated method stub
            super.paint(g);
        }
    };
    jpb.setValue(0);        
    setup1stTab();
    //update Progress
    setup2ndTab();
    //update progress
    etc....
    ss.close();
}

如果這是不可能的,或者如果我只是錯了,請告訴我。 我環顧四周,看到有人提到了Threading / SwingWorker ,但是在搞亂了那個和Observer / Observable的東西后(不可否認只是一點點),我仍然無法弄明白。

要獲得類似於Eclipse splash的內容,請參閱java.awt.SplashScreen 一旦圖像在屏幕上,就可以調用SplashScreen.createGraphics()來獲取..

..a圖形上下文(作為Graphics2D對象)用於初始屏幕疊加圖像,允許您在初始屏幕上繪圖。

在上面繪制進度條。

假設在EDT(事件調度線程)中調用setup(),該代碼將起作用。

要在EDT中調用方法,請執行以下操作:

    SwingUtilities.invokeLater(new Thread() {
        @Override
        public void run() {
            setup();
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM