gpt4 book ai didi

java - 自定义 JMenuItem

转载 作者:行者123 更新时间:2023-12-02 07:12:54 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com