我想在按下按钮后绘制一个矩形。当我第一次按下按钮时,它会绘制一个矩形。我再次按下按钮后试图在第一个附近绘制更多的矩形,但没有画出任何东西。有人能帮助我吗?
这是我使用的代码。非常感谢你
class Coord{
int x = 0;
int y = 0;
}
public class DrawRectangle extends JPanel {
int x, y, width, height;
public DrawRectangle (int x, int y, int width, int height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public Dimension getPreferredSize()
{
return new Dimension(this.width, this.height);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.RED);
g2.fillRect(this.x, this.y, this.width, this.height);
}
public static void main(String[] args)
{
final Coord coord = new Coord();
final JPanel center = new JPanel();
center.setLayout(null);
center.setLocation(10, 10);
center.setSize(300, 300);
JButton button = new JButton("Button");
button.setBounds(350,200,75,50);
button.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DrawRectangle component = new DrawRectangle(coord.x, coord.y, 30, 30);
component.setLocation(coord.x, coord.y);
component.setSize(component.getPreferredSize());
center.add(component);
center.repaint();
coord.x += 30;
coord.y +=30;
}
});
JFrame frame = new JFrame();
frame.setLayout(null);
frame.add(center);
frame.add(button);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
答案 0 :(得分:4)
您的paintComponent()只绘制一个矩形。它会清除面板的背景,然后绘制矩形。
如果你想要多个矩形,那么你需要:
保持一个矩形列表进行绘制,然后每次遍历List并绘制矩形
将每个矩形绘制到BufferedImage上,然后绘制BufferedImage。
查看Custom Painting Approaches了解这两种方法的工作示例。试着两个,看看你更喜欢哪个。