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

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 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号