java - JButton 打印多次而不是一次。为什么?

标签 java swing awt jbutton actionlistener

我有一个 JButton,代码如下。当按下时,它会在控制台上打印 3 次,而不是一次。为什么要这样做以及如何解决这个问题?提前致谢!我还在代码牧场上发帖。

    change61 = new JButton("N");
    change61.setLocation(0,0);
    change61.setSize(25,14);
    change61.setFocusPainted(false);
    change61.setBorder(new LineBorder(Color.BLACK));
    change61.setMargin(new Insets(0,0,0,0));
    change61.setFont(new Font("Arial", Font.BOLD, 7));
    change61.setRolloverEnabled(false); // TEST
    change61.addActionListener(this);
    change61.setActionCommand("Normal");
    buttons16.add(change61);   

    change61.getModel().addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                ButtonModel model = change61.getModel();
                if (model.isArmed()) {
                    cl1.setIcon(CL2);
                    lvrvr1.setIcon(LVRL);
                    dsw1.setIcon(LSIG);
                    dsy1.setIcon(CL1);
                    b1b.setIcon(LHC);
                    System.out.println("Button Pressed"); // THIS GETS PRINTED 3 TIMES TO CONSOLE INSTEAD OF ONCE

                } else {
                    cl1.setIcon(CL1);
                }
            }
        });

最佳答案

在 stateChagned 方法中,使用 isPressed 而不是 isArmed。它应该可以工作。

或者按照@camickr的建议

change61.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                    cl1.setIcon(CL2);
                    lvrvr1.setIcon(LVRL);
                    dsw1.setIcon(LSIG);
                    dsy1.setIcon(CL1);
                    b1b.setIcon(LHC);
                    System.out.println("Button Pressed"); // THIS GETS PRINTED 3 TIMES TO CONSOLE INSTEAD OF ONCE
            }
        });

关于java - JButton 打印多次而不是一次。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52746271/

相关文章:

java - 无法将字符串添加到 arrayList 中

java - 用于输入名称和标记的双向链表并以 switch case 的形式打印

java - 动态添加 JCheckBox

java - 如何保存单元格中的新值而不是旧值?

java - JTable 中的 JProgressBar 未更新

java - 如何使用键绑定(bind)使矩形在屏幕上移动?

java - 让主线程等待一个事件

java - 是否可以让 Hibernate 通过 ManyToMany 关系执行 OrderBy?

java - 如何打开 AWT 日志记录

java - Java Swing 中的空指针异常