2

I have a canvas and I want to draw a rectangle based on a JButton click.

So in other words

private void jb_drawActionPerformed(ActionEvent evt) {                                        
    // draw a rectangle method
}     

Basically, how do I encorporate the pain(Graphics g) thingamagic in that method? or should I make the rectangle an object and call a "render" method from that object? If so, can someone link a tut?

private void jb_drawActionPerformed(ActionEvent evt) {                                        
    myrectange.render(x,y); // ????
}  
4

1 回答 1

4

一般意见和建议

  • 一种方法:在 BufferedImage 中绘制从 BufferedImage 获取您的 Graphics 对象,然后在 JComponent(JPanel 的?)paintComponent 方法中绘制 BufferedImage。
  • 如果这样做,您将使用直接从 BufferedImage 获得的 Graphics 对象来进行绘图。
  • 完成后不要忘记处理此 Graphics 对象。
  • 实际绘图是在 JPanel 的paintComponent(...)方法中完成的(见下文)。
  • 另一种方法:更改一个类字段,并让 JPanel 的paintComponent 方法在绘画时使用该字段。例如,如果你想绘制多个矩形,ArrayList<Rectangle>在你的 ActionListener 中创建一个添加,调用repaint()并让paintComponent(...)方法遍历 List,绘制它持有的矩形。
  • 请注意,该paintComponent(...)方法永远不会直接调用,而是您建议 JVM 通过调用来调用它repaint()
  • 永远不要处理 JVM 提供给您的 Graphics 对象,例如传递给paintComponent(Graphics g)参数的对象。

链接

于 2013-10-13T19:14:00.313 回答