java - 每次在 Java Swing 中单击 JFrame 中的 JButton 时,如何添加一个新的 JPanel 实例

标签 java swing jpanel

我正在使用 Eclipse IDE .我添加了来自扩展 JPanel 的不同类的面板到 JFrame属于不同的类别。

我添加了一个"new"JButton在框架上。我添加了 <JPanel instance>.setVisible(true)在该按钮的 actionListener 事件上。但是当我按下“新建”按钮时,它会显示 JPanel 的前一个实例。 .当我按下“新建”JButton 时,我想添加该面板的一个新实例.

这是我的按钮的代码:

final Rec r = new Rec();
JButton btnNew = new JButton("New Receipt");
btnNew.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        r.setVisible(true);
        contentPane.add(r,BorderLayout.CENTER);
    }
});

这里,Rec 是一个扩展 JPanel 的类。

最佳答案

首先,您需要在支持多个面板的框架上使用 LayoutManager。我建议现在研究一下 FlowLayout - 如果您刚刚开始使用 Swing,这是最容易学习的。您还需要调用 frame.add(panel) 来显示面板。您不需要调用 setVisible(true),因为默认情况下所有 JPanel 实例都是可见的。

每当添加或删除面板时,您还需要在 JFrame 上调用 revalidate()repaint() - 这会强制布局根据 JFrame 的底层 Component 列表中所做的任何更改自行更新。

关于java - 每次在 Java Swing 中单击 JFrame 中的 JButton 时,如何添加一个新的 JPanel 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685673/

相关文章:

java - Netty 管道中的多个 ChannelInboundHandlerAdapter

java - Guice测试类是否已经创建

java - 更改 BufferedImage 的内容,然后更新 JFrame 以反射(reflect)它

java - 如何将 JButton 添加到 GridLayout?

java - 如何使用 JComboBox 单元格编辑器修复 JTable 的 java.awt.IllegalComponentStateException?

java - 在JAVA Eclipse中添加背景到JPANEL

java - 如何将多个用户输入传递到 ArrayList 中?

java - 来自 weblogic 的数据库连接

java - 从菜单到 JPanel 的图像/面板/按钮有困难

java - 如何使面板数 = for 循环中的迭代次数