是否可以创建一个包含复选框列表的自定义 JMenuItem? 示例是 Excel 过滤器弹出菜单:
到目前为止,我所做的是这样的:
JPopupMenu headerPopup = new JPopupMenu();
JMenuItem clearfilter = new JMenuItem ("Clear Filter From Time");
JMenu filter = new JMenu("Number Filter");
filter.add(new JMenuItem("Equals.."));
filter.add(new JMenuItem("Not Equal.."));
JPanel checkBoxItems = new JPanel();
JCheckBox[] checkBoxes = new JCheckBox[200];
initList(checkBoxes);
JList list = new CheckBoxList();
list.setModel(new ListModel(checkBoxes));
JScrollPane scrollPane = new JScrollPane(list);
checkBoxItems.setLayout(new BorderLayout());
checkBoxItems.add(scrollPanel);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 3));
buttonPanel.add(new JPanel());
buttonPanel.add(new JButton("Ok"));
buttonPanel.add(new JButton("Cancel"));
checkBoxItems.add(buttonPanel, BorderLayout.SOUTH);
headerPopup.add(clearfilter);
headerPopup.add(filter);
headerPopup.add(checkBoxItems);
checkBoxItems面板的内容是JCheckBox的JList和两个按钮。 问题是当光标进入面板时,即使光标已经进入面板,数字过滤菜单项仍将被选中,并且其 PopupMenu 仍将显示。
我尝试了这个但没有成功,还有其他方法吗?:
checkBoxItems.addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent e)
{
filter.setArmed(false);
filter.setSelected(false);
}
});
最佳答案
使用
JCheckBoxMenuItem
,将它们放入ButtonGroup
checkBoxItems.addMouseListener(new MouseAdapter()
应该是ChangeListener
,以及getButtonModel
这些事件直接在API中实现,不需要添加
MouseListener
,ButtonModel
仅对于 API 中未实现或未舒适实现的部分鼠标和按键事件
是必需的
关于java - 自定义 JMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15292969/