我有一个 JMenuJMenuItem, ,当我点击此时,我需要打开一个 JFrame 或窗口,换句话说,内部的组件 JButton, JTextField,...

我怎样才能做到这一点 ?

有帮助吗?

解决方案

您可以创建 JFrame 以相同的方式创建初始 JFrame, ,并打电话

setVisible(true);

在里面 ActionListener 你的 JMenuItem 在单击菜单时使其可见。


如果您希望它是模态(除非关闭新窗口,否则无法访问原始帧) JDialog 而是设置 modal 在构造函数中为真或致电 setModal(true).

其他提示

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

如果我使用jframe,我会收到此错误:“ java.lang.illegalgumentException:将窗口添加到容器中”。

这是我的代码在Action Performed方法中:

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();

您正在混淆“弹出窗口”和“ Windows”。

当您右键单击某些对象时,通常会显示弹出窗口。弹出窗口将显示可以在该对象上执行的操作列表。例如,文本字段可能具有“剪切”,“复制”和“粘贴”。阅读《秋千教程》中的部分提出弹出菜单“ 了解更多信息。

窗口用于在Jframe或JDialog中显示其他摆动组件。

鉴于您是从菜单项中调用此操作的,我认为您可能想创建并显示模式JDialog,而不是Jframe或弹出窗口。

另外,在阅读教程时,请阅读有关“使用布局经理”的部分。使用空布局不是创建对话框的最佳方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top