在 Swing 运行时动态添加按钮

Dynamically adding buttons during runtime in Swing

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

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

}

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

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