从打开的JComboBox打开JPopupMenu



我想更改组合框的 OOTB 行为,在鼠标右键单击后冻结它(检测单击了哪个按钮很容易,所以这不是重点)并打开 JPopupMenu 选择该条目。

那么 - 如何在给定条件下禁用选择条目并使用自定义行为?

我尝试从向所有组合框组件添加鼠标侦听器开始,但没有成功 - 没有任何变化

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass {
    public static void main(final String args[]) {
        final String labels[] = { "A", "B", "C", "D", "E" };
        JFrame frame = new JFrame("Selecting JComboBox");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JComboBox comboBox = new JComboBox(labels);
        frame.add(comboBox, BorderLayout.SOUTH);
        frame.setSize(400, 200);
        frame.setVisible(true);
        for (Component c : comboBox.getComponents()) {
            c.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("cli");
                    super.mouseClicked(e);
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("pre");
                    super.mousePressed(e);
                }
            });
        }
    }
}
  • 在 Swing 中不可能同时显示两个轻量级弹出容器

  • 关于 JPopup 的 JComboBox 弹出窗口的示例

  • 有关于将JPopup设置为重量级的肮脏黑客

  • 但我建议将AWT ContainerSwing JComponents混合,并将AWT.PopupSwing.JComponent一起使用(JMenuItemJButton

相关内容

  • 没有找到相关文章

最新更新