0

我有一个JMenu带有 a 的JMenuItem,当我点击它时,我需要打开一个JFrame或窗口,换句话说,一个带有 inside 的组件JButtonJTextField...

我怎样才能做到这一点 ?

4

3 回答 3

2

您可以JFrame以与创建初始值相同的方式创建JFrame,然后调用

setVisible(true);

在单击菜单ActionListenerJMenuItem使其可见。


如果您希望它是模态的(除非关闭新窗口,否则无法访问原始框架),您可以使用 aJDialog代替,modal在构造函数中设置为 true,或者调用setModal(true).

于 2010-05-05T18:01:37.037 回答
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();
于 2010-05-05T18:55:26.373 回答
0

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

当您右键单击某个对象时,通常会显示一个弹出窗口。弹出窗口将显示可以对该对象执行的操作列表。例如,文本字段可能有“剪切”、“复制”和“粘贴”。阅读 Swing 教程中关于“弹出弹出菜单”的部分以获取更多信息。

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

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

此外,在阅读教程时,请阅读“使用布局管理器”部分。使用空布局不是创建对话框的最佳方式。

于 2010-05-05T19:59:32.033 回答