此示例创建ToolBar并尝试将相同的ToolBar添加到2个不同的JFrame。
我原以为两个JFrame都有相同的ToolBar,但显然ToolBar只被添加到第二个JFrame中。
如果第二个JFrame的代码被注释掉,那么ToolBar会按预期添加到第一帧。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;
public class ToolBarSample {
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.setRollover(true);
JButton button = new JButton("button");
toolbar.add(button);
toolbar.addSeparator();
toolbar.add(new JButton("button 2"));
toolbar.add(new JButton("button 3"));
toolbar.add(new JButton("button 4"));
Container contentPane = frame.getContentPane();
contentPane.add(toolbar, BorderLayout.NORTH);
contentPane.setPreferredSize(new Dimension(10,10));
JTextArea textArea = new JTextArea();
JScrollPane pane = new JScrollPane(textArea);
contentPane.add(pane, BorderLayout.CENTER);
frame.setSize(500, 500);
frame.setVisible(true);
JFrame frame2 = new JFrame("JToolBar Example 2");
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane2 = frame2.getContentPane();
contentPane2.add(toolbar, BorderLayout.NORTH);
frame2.setSize(500, 500);
frame2.setVisible(true);
}
}
为什么只将JToolBar添加到第二个JFrame而不是两者都添加?
答案 0 :(得分:0)
您可以同时将JToolbar(Component)添加到1个JFrame(Container)中。因为Swing / AWT组件的结构是一棵树。树的节点不能超过1个父节点。 在您的情况下,您可以实现一种方法来创建JToolbar。然后,您创建2个JToolbar并添加到2 JFrame,如下所示:
class ToolBarSample {
public static void main(final String args[]) {
JFrame frame = new JFrame("JToolBar Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.add(createToolbar(), BorderLayout.NORTH);
contentPane.setPreferredSize(new Dimension(10, 10));
JTextArea textArea = new JTextArea();
JScrollPane pane = new JScrollPane(textArea);
contentPane.add(pane, BorderLayout.CENTER);
frame.setSize(500, 500);
frame.setVisible(true);
JFrame frame2 = new JFrame("JToolBar Example 2");
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane2 = frame2.getContentPane();
contentPane2.add(createToolbar(), BorderLayout.NORTH);
frame2.setSize(500, 500);
frame2.setVisible(true);
}
private static JToolBar createToolbar() {
JToolBar toolbar = new JToolBar();
toolbar.setRollover(true);
JButton button = new JButton("button");
toolbar.add(button);
toolbar.addSeparator();
toolbar.add(new JButton("button 2"));
toolbar.add(new JButton("button 3"));
toolbar.add(new JButton("button 4"));
return toolbar;
}
}