2

如果 paint() 方法已用于其他目的,我如何在 JPanel 中使用图像作为背景?(我试图在面板中绘制图像)。

这是我用铅笔画的代码,但我不知道如何将图像添加为背景?

@Override
public void paint(Graphics g) {

    if (x >= 0 && y >= 0) {
        g.setColor(Color.BLACK);
        g.fillRect(x, y, 4, 4);

    }
}

谢谢迭戈

4

2 回答 2

4

Hovercraft Full Of Eels gave good advice on one direction to take. Here is another.

  • Display the image in a (ImageIcon in a) JLabel.
  • When it comes time to paint:
    • Call createGraphics() on the BufferedImage to gain a Graphics2D object.
    • paint the lines or other visual elements to the graphics instance.
    • dispose of the graphics instance.
    • Call repaint() on the label.

E.G. as seen in this answer.

于 2012-08-24T01:27:59.963 回答
4

建议:

  • 不要在 JPanel 的paint(...)方法中绘制,而是使用它的paintComponent(...)方法。这有几个原因,一个是如果您使用该paint(...)方法,那么您还负责绘制 JPanel 的边框和子组件,并且有可能弄乱这些家伙的渲染。你也失去了 Swing 的自动双缓冲。
  • 在调用方法中的任何其他代码之前,首先调用父类的超级方法。这将允许 JPanel 刷新其背景并执行任何可能需要完成的图形内务处理。
  • 接下来使用 , 绘制背景图像g.drawImage(...)
  • 然后做你的铅笔画。
于 2012-08-24T01:20:27.250 回答