gpt4 book ai didi

java - 如何防止 JPopupMenu 关闭?

转载 作者:行者123 更新时间:2023-12-04 05:45:12 27 4
gpt4 key购买 nike

我创建了一个“日期选择器”组件,它只是一个 Controller (JComponent)和一个显示器(JPopupMenu 扩展名)。当用户使用箭头控制日期时,我希望显示弹出窗口继续显示。我试过调用popup.show(...)mouseReleased按钮以尝试重置弹出窗口,但之后它不会像往常一样隐藏。如何在保持 JPopupMenu 的通常行为的同时实现这一点?

当然我可以使用 JWindow , 但是我不得不担心模拟 JPopupMenu 的显示/隐藏行为使用我非常想避免的焦点等。

谢谢你。 :)

enter image description here

SSCCEE

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class PopupSSCCE {

private JFrame frame = new JFrame();
private JPanel controller = new JPanel();
private JLabel controllerLabel = new JLabel("Controller");
private JLabel display = new JLabel("Display");
private JPopupMenu popup = new JPopupMenu();
private JButton prev = new JButton("<");
private JButton next = new JButton(">");

private PopupSSCCE() {
controllerLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (controllerLabel.contains(e.getPoint()))
popup.show(controllerLabel, -50, controllerLabel.getHeight());
}
});

frame.setPreferredSize(new Dimension(250, 300));
popup.setPreferredSize(new Dimension(200, 200));
controller.setPreferredSize(new Dimension(200, 50));
prev.setPreferredSize(new Dimension(50, 50));
next.setPreferredSize(new Dimension(50, 50));
controllerLabel.setPreferredSize(new Dimension(100, 50));

controller.add(prev);
controller.add(controllerLabel);
controller.add(next);
popup.add(display);
frame.getContentPane().add(controller);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
new PopupSSCCE();
}
}

最佳答案

  • 不要使用 JPopupPopup容器作为 non_homework 代码的基础,
  • 来自 Java4无法从 JComboBox、JMenu、JPopupMenu、more here 管理“留在屏幕上的弹出窗口”
  • 通过 Toedter 使用存在和非错误代码或 SwingXkleopatra 制作
  • 重要的是不要尝试重新发明轮子
  • 关于java - 如何防止 JPopupMenu 关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772006/

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