按下时我无法改变JButton的颜色

时间:2017-05-10 17:34:41

标签: 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);
        }
    });
    button_32.setBounds(0, 57, 33, 29);
    contentPane.add(button_32);

3 个答案:

答案 0 :(得分:0)

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

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();
    }

}

答案 1 :(得分:0)

您可以按照建议here创建自己的Button,它可以扩展ButtonModel或只是这样做。

答案 2 :(得分:0)

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);
  }

}