2013-12-17 108 views
0

我有一個使用卡片佈局的Swing應用程序,它基本上根據用戶從下拉菜單中選擇的內容來更改顯示的面板。在Swing中切換面板

我的一個面板有一個窗體。當按下提交按鈕時,我需要收集所有要收集的輸入信息,並且要切換到另一個輸入。 (這第二個面板是在一個單獨的類中定義的)我還需要將所有輸入以某種方式傳遞給新面板中的方法。

有什麼建議嗎? Dario

+0

你能告訴我們一個代碼示例嗎? –

回答

3

如果您看下面的代碼中的<-- s,每個應該解決您在帖子中的每個不同問題。我想你應該知道如何製作一個提交按鈕,所以我沒有包括這個。 (注意:這不是運行代碼,只是建議);

public class MainPanel entends JPanel { 
    CardLayout layout = new CardLayout(); <-- card layout 
    JPanel panel = new JPanel(layout); <-- set layout to main panel 
    NewPanel newPanel = new NewPanel(); <-- you new panel 
    JPanel p1 = new JPanel();    <-- random panel 
    JTextField text = new JTextField() <-- text field in form 
    JButton button = new JButton(); 

    JComboBox cbox = new JComboBox(new String[] {"newPanel", "p1"}); <-- hold panel names 

    public MainPanel(){ 
     panel.add(newPanel, "newPanel");  <-- name associated with panel 
     panel.add(p1, "p1"); 

     ... 

     cbox.addAItemListener(new ItemListener(){ 
      public void itemStateChnaged(ItemEvent e){ 

       layout.show(panel, (string).getItem());  <-- show Panel from combobox 
      } 
     }); 

     button.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e){ 
       String txt = text.getText(); 
       newPanel.printText(txt);    <-- Using method from other class  
      } 
     }); 
    } 
} 

public class NewPanel extends JPanel { 

    public void printText(String text){    <-- method from other class 
     System.out.println(text); 
    } 
}