java - 在 Eclipse 中按 Ctrl+F6 创建弹出菜单的最佳方法是什么?

标签 java swing jdialog

我想在 Ctrl+F6 上创建与 Eclipse 中完全相同的弹出菜单。

它应该有 JScrollBar 和字符串列表,其中每个项目都有小边框。

我有使用JDialog的想法,但如何让它不显示边框和关闭按钮,而只显示带滚动条的JList

谢谢!

最佳答案

最简单、最直接的方法是使用 JPopupMenu 类。您可以将任何 JComponent 添加到 JPopupMenu,而不仅仅是 JMenuItem

这是一个按钮,单击该按钮后,会在弹出窗口中显示一个 JList,没有任何关闭按钮,只有一个滚动条。只要弹出窗口(JList)失去焦点,弹出窗口就会自动关闭。

final JButton b = new JButton("Press me");
b.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        final DefaultListModel<String> model = new DefaultListModel<>();
        for (int i = 0; i < 100; i++)
            model.addElement(i + ".");
        final JList<String> l = new JList<>(model);

        final JPopupMenu pm = new JPopupMenu();
        final JScrollPane sp = new JScrollPane(l);
        // pm.setPreferredSize(new Dimension(100, 300));
        pm.add(sp);
        pm.show(b, 0, 0);
    }
});

关于java - 在 Eclipse 中按 Ctrl+F6 创建弹出菜单的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218294/

相关文章:

java - 如何创建显示/隐藏详细信息按钮?

swing - Java-读取复选框是否被选中

java - 向 JDialog 添加按钮?

Java单元测试: How to know its running on SemaphoreCI?

java - 带有灵气的自定义 JButton

java - 为什么操作监听器会阻止我的程序连续递增/递减数字?

java - 如何在java中添加弹出窗口到jtextFiled View

java - 如何仅关闭 JDialog 并使 JFrame 仍然可用

java - 缓冲输出流

java - 使用Java ProcessBuilder调用全局安装的 Node 模块