从打开的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 Container
与Swing JComponents
混合,并将AWT.Popup
与Swing.JComponent
(JMenuItem
或JButton
)一起使用