【问题标题】:Switching Panels in Swing在 Swing 中切换面板
【发布时间】:2018-03-04 11:44:21
【问题描述】:

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

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

有什么建议吗? 达里奥

【问题讨论】:

  • 你能给我们看一个代码示例吗?

标签: java swing layout-manager cardlayout


【解决方案1】:

如果您查看以下代码中的 <--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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2015-10-08
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多