是否可以创建一个包含复选框列表的自定义 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);
}
});