猿问

Java JCheckBoxMenuItem 仅在选择时触发事件

我在 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....

     });

我不确定问题出在哪里,也许与嵌套的操作列表器有关。即使复选框未被选中,它也会被触发。有办法解决这个问题吗?


交互式爱情
浏览 89回答 1
1回答

达令说

问题是您在错误的位置检查 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....                            }                        }                    };                });            }        });
随时随地看视频慕课网APP

相关分类

Java
我要回答