在Swing中运行时动态添加按钮

时间:2016-01-23 18:00:00

标签: java swing runtime components add

当我向工具栏添加按钮时,我遇到了这个奇怪的问题。我在动画显示框架之前添加了一个按钮添加了动作侦听器,它可以正常工作:

btn.addActionListener(new ActionListener() {
    @Override
     public void actionPerformed(ActionEvent e) {
        toolbar.add(new JButton("new button"));
     }
});

我还添加了一段代码,它应该在加载一些插件后添加一个新按钮,并且由于某种原因,这段代码不起作用。

@Override
public void handle() {
    System.out.println("Button added");
    MainFrame frame = Application.getInstance().getMainFrame();
    frame.getToolbar().add(new JButton("Plugin button"));

    frame.getToolbar().revalidate();
    frame.getToolbar().repaint();

    System.out.println(frame.getToolbar().getComponents().length); // It is definitely being added, just not shown

}

按钮肯定是添加的,只是没有显示。 我真的很感激任何帮助,因为这件事阻止了我继续前进。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。问题是我实例化了MainFrame两次,首先在main中调用Application构造函数然后在调用Application.getInstance()时,所以添加到MainFrame的所有组件都被删除了。