从打开的JComboBox打开JPopupMenu

我想改变combobox的OOTB行为,在点击鼠标右键(点击哪个按钮很容易,这不是重点)后冻结它,并打开JPopupMenu而不是选择那个条目。

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

我尝试将鼠标监听器添加到所有combobox组件中,但没有成功 – 没有任何改变

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.JComponentJMenuItemJButton )一起使用