Java Swing - 单击按钮后绘制连续的矩形

时间:2016-03-24 03:51:34

标签: java swing

我想在按下按钮后绘制一个矩形。当我第一次按下按钮时,它会绘制一个矩形。我再次按下按钮后试图在第一个附近绘制更多的矩形,但没有画出任何东西。有人能帮助我吗?

这是我使用的代码。非常感谢你

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

1 个答案:

答案 0 :(得分:4)

您的paintComponent()只绘制一个矩形。它会清除面板的背景,然后绘制矩形。

如果你想要多个矩形,那么你需要:

  1. 保持一个矩形列表进行绘制,然后每次遍历List并绘制矩形

  2. 将每个矩形绘制到BufferedImage上,然后绘制BufferedImage。

  3. 查看Custom Painting Approaches了解这两种方法的工作示例。试着两个,看看你更喜欢哪个。