简体   繁体   English

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

[英]I can't change the color of a JButton when pressed

I have all the imports needed and there are no errors but it won't work. 我拥有所有需要的导入,没有错误,但无法正常工作。

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

I think it can be related to "implementation of the abstract class". 我认为这可能与“抽象类的实现”有关。 Try this: 尝试这个:

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

}

您可以创建自己的Button,该按钮可以扩展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);
  }

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM