尝试在单击时来回更改 J 按钮的颜色

Trying to change the color of a J Button back and forth when it is clicked

在 Java 方面我还是个新手,我试图通过使用动作侦听器在每次单击按钮时更改按钮的颜色。但是我尝试了很多不同的方法并遇到了障碍...我尝试使用布尔值但我仍然无法解决这个问题。

Color change = Color.BLACK    
B.setForeground(change);
B.setContentAreaFilled(false);
B.setFocusPainted(false);
B.setBounds(100, 175, 75, 75);

R.add(B); // R is the JFrame the button is added to...

             B.addActionListener(new ActionListener() { //Action Listener when pressing should change the color from Black to Red
                        public void actionPerformed(ActionEvent e) {
                            boolean right = false;
                            if (change == Color.BLACK) {
                                right = true;
                                B.setForeground(Color.red);
                            }
                        if (right == true) {
                            B.setForeground(Color.BLACK);
                            right = false;
                        }

                    }

                });

在这种情况下...

B.addActionListener(new ActionListener() { //Action Listener when pressing should change the color from Black to Red
    public void actionPerformed(ActionEvent e) {
        boolean right = false;
        if (change == Color.BLACK) {
            right = true;
            B.setForeground(Color.red);
        }
        if (right == true) {
            B.setForeground(Color.BLACK);
            right = false;
        }
    }
});

right 将始终是 false,因为它是在 actionPerformed 方法中本地声明的。

相反,创建 ActionListener 的实例字段,例如...

B.addActionListener(new ActionListener() { //Action Listener when pressing should change the color from Black to Red
    private boolean right = false;
    public void actionPerformed(ActionEvent e) {
        if (change == Color.BLACK) {
            right = true;
            B.setForeground(Color.red);
        }
        if (right == true) {
            B.setForeground(Color.BLACK);
            right = false;
        }

    }

});

此外,change 永远不会改变,所以它总是 BLACK,在这种情况下,我可能会想做更多类似的事情...

B.addActionListener(new ActionListener() { //Action Listener when pressing should change the color from Black to Red
    private boolean right = false;
    public void actionPerformed(ActionEvent e) {
        if (!right) {
            B.setForeground(Color.red);
        } else if (right) {
            B.setForeground(Color.BLACK);
        }
        right = !right;
    }

});