【问题标题】:How to add Swing components in an ActionListener?如何在 ActionListener 中添加 Swing 组件?
【发布时间】:2011-08-30 20:35:20
【问题描述】:

我有一个名为 newMI 的 JMenuItem,在一个扩展 JFrame 的类中。当我单击 JMenuItem 时,我想将 Swing 组件添加到我的 JFrame。出于测试目的,我正在尝试添加一个 JPanel 并将 JPanel 的背景颜色设置为红色。

这是我的 ActionListener:

newMI.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
        JPanel p = new JPanel();
        p.setBackground(Color.red);
        add(p);
   }
}

但是这不起作用。如果在其他 Swing 组件的初始化期间将 JPanel 添加到 JFrame 中,我可以更改 JPanel 的背景颜色。但是我不能直接在 ActionListener 内将 Swing 组件添加到 JFrame。有人可以帮忙吗?

非常感谢。

【问题讨论】:

    标签: java swing actionlistener


    【解决方案1】:

    当您从可见的 GUI 中动态添加/删除组件时,您需要执行以下操作:

    panel.add(...);
    panel.revalidate();
    panel.repaint();
    

    如果您需要更多帮助,请发布您的 SSCCE 来说明问题。

    【讨论】:

      【解决方案2】:

      您需要重新布局组件——您的新面板已添加,但大小为 0x0 像素。添加面板后在您的组件上调用layout(true)

      如果您的组件中没有布局管理器,则必须在将添加的面板添加到组件后手动设置其位置和大小。

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多