java - 用于更改卡片布局中卡片的按钮

标签 java swing button jbutton cardlayout

我的框架中有 2 个面板,1 个用于按钮(我想使用 radioButton,但现在使用按钮更容易),另一个用于卡片布局面板。我的计划是当我按下特定按钮时对乍得进行洗牌。就像移动按钮会向我显示移动面板卡。移动面板卡有 x0 标签和文本字段,线路面板卡有 x0 和 x1 标签和文本字段。

有 2 个类,1 个用于按钮面板 = 按钮 另一个用于卡片 = PanelMiddle 这是我的代码:

public class PanelMiddle{
    JPanel controlPanel = new JPanel();
    CardLayout cl = new CardLayout();

    JPanel movePanel = new JPanel();
    JPanel linePanel = new JPanel();

    JLabel x0Label = new JLabel("x0");
    JTextField x0TextField = new JTextField(3);
    JLabel x1Label = new JLabel("x1");
    JTextField x1TextField = new JTextField(3);

    public PanelMiddle(){
        controlPanel.setLayout(cl);

        //move panel
        movePanel.setLayout(new GridLayout (1,2));
        movePanel.add(x0Label);
        movePanel.add(x0TextField);
        controlPanel.add(movePanel,"Move"); //add the keyword Move to show the move card

        //line panel
        linePanel.setLayout(new GridLayout (2,2));
        //linePanel.add(x0Label);
        linePanel.add(x1Label);
        //linePanel.add(x0TextField);
        linePanel.add(x1TextField);
        controlPanel.add(linePanel,"Line"); // add the keyword Line to show the line card

        }
    }

In the other class I have:

    public class Buttons extends PanelMiddle{
    JPanel buttonPanel = new JPanel();

    JButton moveB = new JButton ("Move");
    JButton lineB = new JButton ("Line");

    public Buttons(){
    buttonPanel.setLayout(new GridLayout (2,1));
    buttonPanel.add(moveB);
    buttonPanel.add(lineB);

    action();
    }

    public void action(){
    moveB.addActionListener((e) -> {
    cl.show(controlPanel,"Move");
    });

    lineB.addActionListener((e) -> { cl.show(controlPanel,"Line");});
    }
    }

我得到的结果很奇怪。它没有完全显示我的面板。但是当我尝试评论所有线路面板时,它起作用了。有人解决了吗?

注意:抱歉,我不知道如何编辑这里的文本,所以有点乱。

编辑1:正如guleryuz所说,我从行面板中注释掉了x0Labelx0TextField

最佳答案

在 swing 组件层次结构中,一个组件只能添加到一个容器中,您将添加 x0Label 和 x0TextField 两个面板。因此,当您添加 x0Labe 两个第二面板(linePanel)时,它将从 movePanel 中删除(x0TextField 的情况相同),因此 movePanel 变为空。

更多详情here

关于java - 用于更改卡片布局中卡片的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964385/

相关文章:

java - 维护 JInternalFrame 的单个实例?

java - 有人可以解释为什么我不能向这个 ScrollView 添加额外的按钮吗?

css - 使用带有自定义 CSS 的表单生成器并需要帮助更改按钮对齐方式

java - Mockito 太多实际调用

java - 使用jdbc odbc连接java到ms access数据库,java用户登录系统

java - 持久化对象时出现 IllegalStateException

Java App Engine 数据存储 : How to query fields of object's inherited classes?

java - 用 Java 制作客户端-服务器应用程序的试用版

java - 为什么 Swing formWindowClosed 不能正常工作?

javascript - 有两个条件的禁用按钮