gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:31:40 25 4
gpt4 key购买 nike

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

我尝试过使用 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/

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