【发布时间】:2012-06-28 13:40:54
【问题描述】:
我想更改组合框的 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);
}
});
}
}
}
【问题讨论】:
-
当在组合框中选择一个值时,您到底想实现什么?
标签: java swing jcombobox jpopupmenu jpopup