首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止JPopupMenu关闭?

如何防止JPopupMenu关闭?
EN

Stack Overflow用户
提问于 2012-05-27 06:04:34
回答 1查看 1.3K关注 0票数 2

我创建了一个‘日期选择器’组件,它只是一个控制器(JComponent)和一个显示器(JPopupMenu扩展)。当用户用箭头控制日期时,我希望弹出窗口保持显示。我试着在按钮的popup.show(...)上调用mouseReleased,试图重置弹出窗口,但之后它并没有像往常一样隐藏起来。如何在保持JPopupMenu的通常行为的同时实现这一点?

当然,我可以使用JWindow,但接下来我必须担心模仿JPopupMenu使用focus等的显示/隐藏行为,这是我非常想避免的。

谢谢。:)

SSCCEE

代码语言:javascript
复制
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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2012-05-27 06:27:48

  • 不要使用JPopupPopup容器作为non_homework代码的基础,
  • Java4无法管理来自JComboBox、JMenu、JPopupMenu、更多在这里的“屏幕上的弹出”
  • 使用exist和non_buggy代码,由托特编写,或由克莱奥帕特拉制作SwingX
  • 重要的是不要尝试重新发明轮子
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10772006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档