在 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 的组件都被删除了。
我在工具栏上添加按钮时遇到了这个奇怪的问题。我将动作侦听器添加到显示框架之前添加的一个按钮,它工作正常:
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 的组件都被删除了。