2012-03-21 73 views
0

背景:我正在研究一個「來自地獄的GUI」程序。啓動後,如何更改我的JFrame的佈局管理器?

問題:我需要將我的JFrame的佈局管理器從構造函數集BorderLayout更改爲FlowLayout。

目的:在一個按鈕被按下後,它會以非常快的速度完成很多次,然後結束在一個佈局管理器或另一個佈局管理器上。

我該如何做到最好?這裏有一些(工作)代碼,如果它有幫助的話:

if (goodVibes) 
     { 
      final Timer t = new Timer(100, null); 
      ActionListener changeStyle = new ActionListener() 
      { 
       public void actionPerformed(ActionEvent e) 
       { 
        int count = 100; 

        // Insert layout manager switching code here 

        count--; 
        if (count <= 0) 
         t.stop(); 
       } 
      }; 
     } 

在此先感謝您的任何指導!

+1

您明白,Java Swing事件線程機制的工作方式,您將不會看到任何這些佈局交換?所有你會看到的是最後的佈局?這段代碼的目的是什麼?你想讓用戶從中體驗到什麼?也許你最好的選擇是使用CardLayout和Swing Timer。 – 2012-03-21 18:53:37

+0

我假設代碼缺少't.addActionListener(changeStyle); t.start();',否則不會發生太多事情。 – 2012-03-21 18:57:05

+0

@ TomHawtin-tackline哈哈是的。這是四個類似的代碼塊中的一個,我確實記得前三個塊中的這兩行。 )編輯:我實際上使用't.addActionListener(flashColors);','t.setRepeats(true);'和't.start();'。 – 2012-03-21 18:59:06

回答

5

大概你會有所有不同的組件?因此,將組件放在每個佈局的JPanel上。切換到frame.setContentPane(panel);

或者,使用java.awt.CardLayout在面板之間切換。

+0

+1,漂亮的解決方案 – mre 2012-03-21 18:52:08

+0

我投票支持CardLayout。交換不可能比這更容易。 – 2012-03-21 18:52:24

+0

這是一個很好的解決方案,謝謝:) – 2012-03-21 18:55:34