如何在java中向按钮添加操作

如何在java中向按钮添加操作,java,swing,applet,Java,Swing,Applet,我一直在使用java按钮,我已经创建了一个按钮,但是当我单击按钮时,我希望对象的形状改变。这是我一直在做的代码 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class shapes { public static void main(String[] a) { JFrame f = new JFrame("Change shapes"); f.setDefaultCloseOpe

我一直在使用java按钮,我已经创建了一个按钮,但是当我单击按钮时,我希望对象的形状改变。这是我一直在做的代码

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class shapes {
public static void main(String[] a) {
    JFrame f = new JFrame("Change shapes");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton b = new JButton("Shapes Change");
    f.getContentPane().add(b);
    f.pack();      
    f.setVisible(true);




}

Public void paint (Graphics g)
{
   //no clue what to do here

}
private static abstract class MyButton extends JButton implements ActionListener {
MyButton()
{
    addActionListener(this);
}

  public void actionPerformed(ActionEvent e) {
  if (e.getSource() == b)
         {

                //no clue what to do here

            }
}
}
}

首先,创建了一个形状,单击按钮后,我想将其更改为另一个形状。

确实需要对
JButton
进行子类化。如果要自定义按钮,可以使用
操作
API,请参阅

要执行自定义绘制,您应该扩展Swing组件,如
JComponent
JPanel
,并覆盖
paintComponent
方法

有关更多详细信息,请参阅

然后,您需要提供一些方法,您可以调用这些方法来告诉组件形状应该如何更改


然后,您将为按钮
ActionListener
提供一种方法来引用绘制面板的实例并调用这些方法…

您只需向按钮添加一个
ActionListener

b.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        // do some action
    }
});
还有几件事需要注意:

  • 您不应该在外部运行Swing方法,否则可能会遇到不可预知的错误
  • 指定类名应大写。在代码中,您将类命名为“shapes”,但将其命名为“shapes”更合适

  • 首先声明和定义图形对象的方法。例如drawSquare()、drawCircle(),用于绘制所需的形状。定义单选按钮或类似按钮,以获得用户的选择(知道必须绘制哪个对象)。在actionPerformed()中,检查选择了哪个单选按钮,并调用适当的方法绘制对象,并调用repaint()在用户界面中进行更新

    没有人知道您的规范,因此您应该告诉我们您想要什么,不要告诉我们