Java 在调用 repaint() 之前,swing 不会显示 g.drawImage()
Java swing won't display g.drawImage() until repaint() is called
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.fillRect(20, 20, 200, 200);
g2.drawImage(map, 0, 0, 1004, 687, null);
}
这是我的 JPanel 中 paintComponent 的代码。
当应用程序启动时,我可以看到矩形(它在那里只是因为我想检查是否正在调用 paintComponent)。但是 在我通过调整 window 的大小或按下强制重绘 () 的按钮来强制重绘 之前,地图不会绘制。
我尝试在几个地方调用 validate(),因为一些答案建议这样做,但它没有用。
g2.drawImage(map, 0, 0, 1004, 687, null);
尝试使用:
g2.drawImage(map, 0, 0, 1004, 687, this);
可能在调用 paintComponent() 方法时图像未完全读取。 "this" 将导致在 I/O 完成时绘制图像。也就是说,面板将收到 I/O 已完成的通知,面板将自行重新绘制。
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.fillRect(20, 20, 200, 200);
g2.drawImage(map, 0, 0, 1004, 687, null);
}
这是我的 JPanel 中 paintComponent 的代码。
当应用程序启动时,我可以看到矩形(它在那里只是因为我想检查是否正在调用 paintComponent)。但是 在我通过调整 window 的大小或按下强制重绘 () 的按钮来强制重绘 之前,地图不会绘制。
我尝试在几个地方调用 validate(),因为一些答案建议这样做,但它没有用。
g2.drawImage(map, 0, 0, 1004, 687, null);
尝试使用:
g2.drawImage(map, 0, 0, 1004, 687, this);
可能在调用 paintComponent() 方法时图像未完全读取。 "this" 将导致在 I/O 完成时绘制图像。也就是说,面板将收到 I/O 已完成的通知,面板将自行重新绘制。