gpt4 book ai didi

java - 如何失去 JMenuItem 焦点或关闭 JPopupMenu

转载 作者:行者123 更新时间:2023-12-02 10:55:30 34 4
gpt4 key购买 nike

以下示例生成一个弹出菜单。

弹出菜单包含 2 项。

一个是 JLabel,另一个是 JTextField。

单击任一项目时,都会打印一条简单的语句。

单击 JLabel 菜单项时,弹出菜单将消失。单击 JButton 菜单项时,弹出菜单仍然存在。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JToggleButton;



public class JPopupExample1 {
public static void main(String[] argv) throws Exception
{
final JPopupMenu menu = new JPopupMenu();
JFrame frame = new JFrame("PopupSample Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuItem item = new JMenuItem("Item Label");
item.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{ System.out.println("Label Pressed"); }});

menu.add(item);

JToggleButton jTbutton = new JToggleButton("Click Me");
jTbutton.setToolTipText("Test Buttons");
jTbutton.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{System.out.println("Button Pressed");} });

menu.add(jTbutton);

frame.setLayout(null);
JLabel label = new JLabel("Right Click here for popup menu");
label.setLocation(10, 10);
label.setSize(250, 50);
frame.add(label);
label.setComponentPopupMenu(menu);
frame.setSize(350, 250);
frame.setVisible(true);
}
}

是否有一种简单的方法可以在单击 JButton 后失去焦点(不将其发送到另一个组件),从而使弹出菜单消失?

最佳答案

您可以在操作监听器中的 System.out.println("Button Pressed"); 之后调用 menu.setVisible(false); 。例如:

JToggleButton jTbutton = new JToggleButton("Click Me");
jTbutton.setToolTipText("Test Buttons");
jTbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button Pressed");
menu.setVisible(false);
}
});

关于java - 如何失去 JMenuItem 焦点或关闭 JPopupMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790771/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com