java - 如何通过按下按钮来隐藏 JPopupMenu?

标签 java swing jpopupmenu

我正在制作一个程序,它有一个带有两个按钮的弹出菜单,其中一个按钮应该关闭弹出菜单,但我不知道如何做到这一点,而且谷歌搜索也不太顺利。

我尝试过使用 popup.hide() 但菜单不会回来,尽管当我尝试移动弹出窗口时这样做了。在这种情况下,它还要求我放置一个 SuppressWarning,并且它花了几秒钟才完全关闭。有没有更好的办法?

我不确定什么样的代码是相关的,但这是相关的按钮及其在其中的作用(我跳过了所有创建看起来不相关的 GUI 部分,一切看起来都很好,而且我知道按钮在工作中): 封装测试;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

interface CustomButton {

    JButton create();

    void react(JPopupMenu popup, JFrame frame);
}

class ErrandsButton implements CustomButton {

    private JButton errands = new JButton("Errands");

    public JButton create() {
        return errands;
    }

    public void react(JPopupMenu popup, JFrame frame) {
        errands.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                popup.show(frame, 120, 65);
            }
        });
    }
}

class Test {

    static JFrame frame = new JFrame("List");
    static CustomButton errands = new ErrandsButton();
    static JButton cancelTask = new JButton("Cancel");
    static JPopupMenu popup = new JPopupMenu();

    static void cancelTask() {
        cancelTask.addActionListener(new ActionListener() {
            @SuppressWarnings("deprecation")
            public void actionPerformed(ActionEvent e) {
                popup.hide();
            }
        });
    }

    public static void main(String args[]) {
        createInterface();
        cancelTask();
        errands.react(popup, frame);
    }

    static void createInterface() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        JPanel popup1 = new JPanel();
        JPanel button = new JPanel();
        popup1.add(cancelTask);
        popup.add(popup1);
        frame.add(popup);
        button.add(errands.create());
        frame.getContentPane().add(BorderLayout.CENTER, button);
        frame.setVisible(true);
    }
}

最佳答案

使用 popup.setVisible(true) 和 popup.setVisible(false)。

关于java - 如何通过按下按钮来隐藏 JPopupMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961026/

相关文章:

java - 找不到 iText7 的 getInstance() 方法,即使它识别 PdfWriter 类

java - 动画构造函数在 Java GUI 中不起作用

java - JMenu 在 Windows7 LAF Java7 中使用 focuslost 事件

java - 关注 JpopupMenu 时检测键盘输入 (Java)

java - 如何在 JavaScript 中使用 struts taglib 标签

java - 使用计时器计算秒数并更新 Activity 中的字符串

java - Hibernate 为新的子实体生成 ghost 条目

java - 将单独类中的多个组件添加到另一个类中的 JFrame

Java注解处理如何检查VariableElement是原始类型(int,float)还是某个类的对象

鼠标退出时的 Java jpopupmenu