调整大小后如何使图像保持不变?

时间:2016-09-29 22:52:55

标签: java image swing resize

我是Java的新手,我正在试图弄清楚如何在调整窗口大小后确保我的图像保留在屏幕上。在发布之前我曾尝试寻找答案,但我似乎无法找到我正在寻找的东西。

这样做的最佳方式是,我应该怎么做?

以下是我认为的“重要”代码:

public void mouseDragged(MouseEvent DrawingEvent) {
    Graphics g = getGraphics();
    g.drawLine(DrawPoint.x, DrawPoint.y, DrawingEvent.getX(), DrawingEvent.getY());
    DrawPoint = new Point(DrawingEvent.getX(), DrawingEvent.getY());
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
}
}

1 个答案:

答案 0 :(得分:2)

要保留图像:

  • 不要使用通过在Swing组件上调用getGraphics()获得的Graphics对象。这些对象是短暂的,可能导致图像消失或NullPointerExceptions。
  • 而是使用JVM给出的Graphics对象绘制到JPanel的paintComponent方法,就像Swing drawing tutorials告诉你的那样。
  • 您可以在BufferedImage上绘图,然后在JPanel的paintComponent方法中显示该图像 - 这可能是实现您想要做的事情的最简单方法。
  • 或者您可以创建非GUI逻辑对象(如Points或Line2D)的ArrayList,然后使用这些集合来指导如何在JPanel的paintComponent方法中绘制。

For example