仅在选择Java JCheckBoxMenuItem时触发事件

问题描述 投票:0回答:1

我在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....
     });

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

java event-handling jcheckbox
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....
                            }
                        }
                    };
                });
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.