2012-10-10 112 views
0

我的程序看起來像這樣!Java Swing動態加載類到面板

enter image description here

我想有底部部分動態地一幀加載到根據在組合框選擇的項目底部框架。例如,如果選擇了第一個項目,我希望顯示PresentValue.java文件中的面板。這個想法是,我有一個Java文件的每個選擇,顯示我設計在其各自的Java文件。

enter image description here

enter image description here

這兩個java文件應根據從組合框中選擇投入「底」盒子從我的第一張截圖。

我更習慣於Android編程,在那裏我會簡單地調用片段的替換方法來替換加載的片段......在這裏尋找比喻。

final JComboBox selectorBox = new JComboBox(selection); 
    selectorBox.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      int selectionID = selectorBox.getSelectedIndex(); 

     } 
    }); 

但無法找到一種方法來做我想做的事。請解釋。

+0

負載幀轉換本身..請解釋一下.. –

+0

請參閱編輯,我需要的底部取決於什麼是在框中selcted – Killerpixler

+0

什麼是'PresentValue.java'動態改變?它是JPanel的子類嗎? – Sednus

回答

4

對於您擁有的每個Java文件,該Java文件的輸出應該是JPanel。不是JFrame

在顯示任何內容之前,請執行您擁有的所有Java文件。創建所有可能的JPanel s。

在GUI中創建您的JFrame,然後使用刪除和添加方法JFrame刪除或添加所需的JPanel

下面是我的一個GUI的例子。如果顯示JPanel大於報警JPanel更大或更小

public void updatePartControl() { 
    Thread thread = new CountdownThread(model, this, displayPanel); 
    thread.start(); 

    frame.remove(alarmPanel.getPanel()); 
    frame.add(displayPanel.getPanel()); 
    frame.validate(); 
    frame.pack(); 
    frame.setBounds(getBounds()); 
} 

的方法的setBounds復位的邊界。

您的應用程序應該有一個JFrame。您使用多個JPanel來創建您的GUI。

+0

做了一些編輯,使其更清楚我需要什麼。請告知 – Killerpixler

+0

試圖讓我的答案更清楚。 –

3

更改底部組件將取決於正在使用的佈局管理器。 CardLayout是專門爲交換面板而設計的。

public void actionPerformed(ActionEvent arg0) { 
    int selectionID = selectorBox.getSelectedIndex(); 
    if (selectionID == 0) { 
     cardLayout.show(basePanel, SELECTED_1); 
    } 
    // handle other selections 

} 
+0

對於[示例](http://stackoverflow.com/a/6432291/230513)。 – trashgod

+0

做了一些編輯,應該使它更清晰我所需要的。請指教 – Killerpixler