我有一个画布,我想根据 JButton 点击画一个矩形。
所以换句话说
private void jb_drawActionPerformed(ActionEvent evt) {
// draw a rectangle method
}
基本上,我如何在该方法中加入pain(Graphics g)thingmagic? 还是应该使矩形成为对象并从该对象调用"渲染"方法?如果是这样,有人可以链接嘟嘟车吗?
private void jb_drawActionPerformed(ActionEvent evt) {
myrectange.render(x,y); // ????
}
一般性意见和建议
- 一种方法:在 BufferedImage 中绘制,从
- BufferedImage 获取图形对象,然后在 JComponent (JPanel?) paintComponent 方法中绘制 BufferedImage。
- 如果这样做,您将使用直接从缓冲图像获取的图形对象进行绘图。
- 使用完此图形对象后,不要忘记将其处理掉。
- 实际绘图是在 JPanel 的
paintComponent(...)
方法中完成的(见下文)。 - 另一种方法:更改类字段,并让 JPanel 的 paintComponent 方法在绘制时使用该字段。例如,如果要绘制多个矩形,请创建一个
ArrayList<Rectangle>
添加到 ActionListener 中,调用repaint()
并让paintComponent(...)
方法循环访问列表,绘制由它持有的矩形。 - 请注意,从不直接调用
paintComponent(...)
方法,而是建议 JVM 通过调用repaint()
来调用它。 - 切勿处理 JVM 提供给您的图形对象,例如传递给
paintComponent(Graphics g)
参数的对象。
链接
- 基础教程:课程:执行自定义绘制
- 更高级的概念:AWT 和 Swing 中的绘画