3

作業中のプロジェクト用にかなり複雑なGUIを構築しています。重要なのは、(とりわけ)JTabbedPane複雑なGUIコンポーネントの12以上のペインが含まれていることです。

私がやろうとしているのは、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のもの(確かにほんの少しだけ)をいじった後、私はまだそれを理解することができません。

4

2 に答える 2

5

Eclipse スプラッシュに似たものを取得するには、 を参照してくださいjava.awt.SplashScreen。画像が画面に表示されたら、SplashScreen.createGraphics()を呼び出して取得できます。

..スプラッシュ スクリーン オーバーレイ イメージのグラフィックス コンテキスト (Graphics2D オブジェクトとして)。これにより、スプラッシュ スクリーン上に描画できます。

その上に進行状況バーを描画します。

于 2011-08-05T17:44:25.350 に答える
1

setup() が EDT (イベント ディスパッチ スレッド) で呼び出されていると仮定すると、そのコードは機能します。

EDT でメソッドを呼び出すには、次のようにします。

    SwingUtilities.invokeLater(new Thread() {
        @Override
        public void run() {
            setup();
        }
    };
于 2011-08-05T17:44:57.027 に答える