Можно ли создать собственный 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 представляет собой JList JCheckBox и две кнопки. Проблема заключается в том, что когда курсор входит внутрь панели, элемент меню «Числовой фильтр» все равно будет выбран, а его всплывающее меню все равно будет отображаться, даже если курсор уже находится на панели.
Я пробовал это, но не работал, как-то иначе?:
checkBoxItems.addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent e)
{
filter.setArmed(false);
filter.setSelected(false);
}
});