从 JMenuItem java 打开一个弹出窗口

发布于 2024-08-31 06:37:43 字数 174 浏览 4 评论 0原文

我有一个带有 JMenuItemJMenu,当我单击它时,我需要打开一个 JFrame 或窗口,换句话说,一个组件里面有 JButton, JTextField,...

我该怎么做?

I have a JMenu with a JMenuItem, and when I click on this, I need to open a JFrame or window, in other words a component with inside JButton, JTextField,...

How can i do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬 2024-09-07 06:37:43

您可以按照创建初始 JFrame 的相同方式创建 JFrame,并调用

setVisible(true);

JMenuItemActionListener > 使其在单击菜单时可见。


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

You can create the JFrame in the same way you created your initial JFrame, and call

setVisible(true);

in the ActionListener of your JMenuItem to make it visible when the menu is clicked.


If you want it to be modal (original frame cannot be accessed unless the new window is closed), you can use a JDialog instead, setting modal to true in the constructor, or calling setModal(true).

策马西风 2024-09-07 06:37:43

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

如果我使用 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();

I write in answer for good code view:

If i use a JFrame i got this error:
"java.lang.IllegalArgumentException: adding a window to a container".

That's my code in actionPerformed method:

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();
强辩 2024-09-07 06:37:43

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

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

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

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

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

You are confusing "popups" and "windows".

A popup is generally shown when you right click on some object. The popup will display a list of actions that can be performed on that object. For example a text field might have "cut", "copy" and "paste". Read the section from the Swing tutorial on "Bringing Up a Popup Menu" for more information.

A window is used to display other Swing components in a JFrame or JDialog.

Given that you are invoking this Action from a menu item I think you probably want to create and display a modal JDialog, not a JFrame or popup.

Also, while reading the tutorial, read the section on "Using Layout Managers". Using null layouts is not the best way to create a dialog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文