面板与图像背景和鼠标绘制

时间:2012-08-24 01:17:58

标签: java swing jpanel

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

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

@Override
public void paint(Graphics g) {

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

    }
}

谢谢迭戈

2 个答案:

答案 0 :(得分:4)

建议:

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

答案 1 :(得分:4)

Hovercraft Full Of Eels在一个方向上给出了很好的建议。这是另一个。

  • 以(ImageIcon} JLabel中的createGraphics()显示图片。
  • 到时候涂漆:
    • 致电BufferedImage上的Graphics2D获取repaint()个对象。
    • 将线条或其他视觉元素绘制到图形实例。
    • 处理图形实例。
    • 在标签上拨打{{1}}。

E.G。如this answer中所示。