在Swing中切换面板

时间:2013-12-17 01:37:27

标签: java swing layout-manager cardlayout

我有一个使用卡片布局的Swing应用程序,它基本上会根据用户从下拉菜单中选择的内容来更改显示的面板。

我的一个面板有一个表格。我需要按下提交按钮以收集所有输入并将面板切换到另一个输入。 (第二个面板在一个单独的类中定义)我还需要将所有输入以某种方式传递给新面板中的方法。

有什么建议吗? 达里奥

1 个答案:

答案 0 :(得分:3)

如果您查看以下代码中的<--,则每个代码都应解决您帖子中的每个不同问题。我想你应该知道如何制作一个提交按钮,所以我没有包含它。 (注意:这不是运行代码,只是建议);

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);
    }
}