为了账号安全,请及时绑定邮箱和手机立即绑定

Java JCheckBoxMenuItem 仅在选择时触发事件

Java JCheckBoxMenuItem 仅在选择时触发事件

交互式爱情 2023-09-20 14:57:04
我在 JMenu 中有一个 JCheckBoxMenuItem。我的任务很简单:当它被选择时,它应该触发一个 DialogBox,换句话说,一个 JFileChooser。当未选择时,不执行任何操作。问题:选择它时它工作正常,但取消选择时它继续做同样的事情。这是代码:JCheckBoxMenuItem checkBox = new JCheckBoxMenuItem("ChebkBox");    checkBox.addItemListener(new ItemListener() {        public void itemStateChanged(ItemEvent arg0) {            if(checkBox.isSelected())            {                System.out.println("SELECTED!");                checkBox.addActionListener(new ActionListener() {                    public void actionPerformed(ActionEvent event) {                        JFileChooser fileChooser = new JFileChooser();                        if (fileChooser.showSaveDialog(checkBox) == JFileChooser.APPROVE_OPTION) {                            //DIALOG BOX CODE....     });我不确定问题出在哪里,也许与嵌套的操作列表器有关。即使复选框未被选中,它也会被触发。有办法解决这个问题吗?
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

问题是您在错误的位置检查 isSelected 。您应该检查actionPerformed 内的选择。


checkBox.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent arg0) {

                System.out.println("SELECTED!");

                checkBox.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent event) {

                        if (checkBox.isSelected()) {

                            if (fileChooser.showSaveDialog(checkBox) == JFileChooser.APPROVE_OPTION) {

                                // DIALOG BOX CODE....

                            }

                        }

                    };

                });

            }

        });


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信