从JMenuItem java打开一个window-popup

时间:2010-05-05 17:58:27

标签: java swing jframe jmenuitem

我有JMenu JMenuItem,当我点击这个时,我需要打开一个JFrame或窗口,换句话说就是一个内部{{1}的组件},JButton,...

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以按照创建初始JFrame的相同方式创建JFrame,然后致电

setVisible(true);
ActionListener的{​​{1}}中

,以便在点击菜单时将其显示。


如果您希望它是模态的(除非新窗口关闭,否则无法访问原始帧),您可以使用JMenuItem代替,在构造函数中将JDialog设置为true,或者调用{ {1}}。

答案 1 :(得分:0)

我在答案中写了好的代码视图:

如果我使用JFrame,我收到此错误: “java.lang.IllegalArgumentException:向容器添加窗口”。

这是我在actionPerformed方法中的代码:

PopupFactory factory = PopupFactory.getSharedInstance();
JFrame frame = new JFrame();
frame.setLayout(null);
frame.setBounds(428, 99, 185, 155);

final JButton button = new JButton();
button.setText("Button");
button.setBounds(10, 93, 111, 25);
frame.getContentPane().add(button);

final Popup popup = factory.getPopup(null, frame, 200, 200);
popup.show();

答案 2 :(得分:0)

你混淆了“弹出窗口”和“窗口”。

右键单击某个对象时,通常会显示弹出窗口。弹出窗口将显示可以对该对象执行的操作列表。例如,文本字段可能具有“剪切”,“复制”和“粘贴”。有关详细信息,请阅读“Bringing Up a Popup Menu”上Swing教程中的部分。

窗口用于在JFrame或JDialog中显示其他Swing组件。

鉴于您正在从菜单项调用此Action,我认为您可能想要创建并显示模式JDialog,而不是JFrame或弹出窗口。

另外,在阅读教程时,请阅读“使用布局管理器”一节。使用空布局不是创建对话框的最佳方法。