我一直在使用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
}
}
}
}
首先,创建了一个形状,单击按钮后我想将其更改为其他形状。
答案 0 :(得分:3)
确实应该需要子类JButton
。如果您想自定义按钮,可以使用Action
API,请参阅How to Use Actions。
要执行自定义绘制,您应该扩展一个Swing组件,例如JComponent
或JPanel
并覆盖paintComponent
方法......
有关详细信息,请参阅Performing Custom Painting。
然后,您需要提供一些方法,您可以调用它来告诉组件形状应该更改为应该如何更改形状。
然后,您将为按钮ActionListener
提供一种方法来引用绘图面板的实例并调用这些方法......
答案 1 :(得分:0)
您只需在按钮上添加ActionListener
:
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do some action
}
});
还有其他注意事项:
答案 2 :(得分:0)
首先声明并定义绘制对象的方法。例如drawSquare(),drawCircle(),它绘制所需的形状。定义单选按钮或类似的东西以获得用户选择(以了解必须绘制哪个对象)。在actionPerformed()中检查选择了哪个radiobutton并调用适当的绘制对象的方法并调用repaint()以在用户界面中进行更新