Java 我能';当按下按钮时,不要改变按钮的颜色

Java 我能';当按下按钮时,不要改变按钮的颜色,java,user-interface,windowbuilder,Java,User Interface,Windowbuilder,我有所有的进口需要,没有错误,但它不会工作 final JButton button_32 = new JButton("2"); button_32.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { button_32.setBackground(Color.red); } }); b

我有所有的进口需要,没有错误,但它不会工作

    final JButton button_32 = new JButton("2");
    button_32.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            button_32.setBackground(Color.red);
        }
    });
    button_32.setBounds(0, 57, 33, 29);
    contentPane.add(button_32);

我认为这可能与“抽象类的实现”有关。 试试这个:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;


public class ExamButton extends JFrame {

    JButton button_32 = new JButton("ssf");
    JFrame frame = new JFrame();

    public ExamButton() {

        final JButton button_32 = new JButton("2");
        button_32.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                button_32.setBackground(Color.red);
            }
        });
        button_32.setBounds(0, 57, 33, 29);

        add(button_32, BorderLayout.CENTER);
        setSize(300, 300);
        setVisible(true);

    }

    public static void main(String[] args) {
        new ExamButton();
    }

}

您可以创建自己的按钮,它可以扩展ButtonModel,也可以按照建议这样做

}

public class Main {

  static JFrame frame;

  public static void main(String[] args)
  {
    // schedule this for the event dispatch thread (edt)
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        displayJFrame();
      }
    });
  }
  static void displayJFrame()
  {
    frame = new JFrame("Our JButton listener example");

    // create our jbutton
    final JButton showDialogButton = new JButton("Click Me");

    // add the listener to the jbutton to handle the "pressed" event
    showDialogButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        // when the button is pressed

          showDialogButton.setBackground(Color.RED);
      }
    });

    // put the button on the frame
    frame.getContentPane().setLayout(new FlowLayout());
    frame.add(showDialogButton);

    // set up the jframe, then display it
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(300, 200));
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }