请注意,我没有在 Windows 机器上测试过这个,只在 Mac 机器上测试过。我不太确定这是否也会发生在 Windows 机器上......
当我调整 Java 应用程序的大小时,内容是不可见的。我已经找到解决方法了after调整大小,但没有while用户正在调整窗口大小。
我没有使用 Swing 或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来)。
结构是这样的:
-
Frame
我的主窗口
-
Container
基于子视图,包括paint(Graphics g)
-method
我已将所有侦听器添加到My main-window
现在我可以重画内容视图 after调整窗口大小。
public void componentResized(ComponentEvent e) {
this.contentView.paint(this.contentView.getGraphics());
}
我要注意使用paint(getGraphics())
- 方法并不是一个真正好的方法,但由于repaint()
- 方法根本不做任何事情,这是唯一的工作可能性。
调整大小时,所有绘制的内容都变得不可见。但是,当我添加一个Button
-以我的为例Content-view
并调整我的大小Main-window
,按钮不会变得不可见。
I am能够跟踪“实时”调整大小事件:
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
}
- 当我开始调整大小时,不会调用此方法。
- 在调整大小时,它会在我调整窗口大小的每个像素的日志中生成“实时调整大小”。
- 当我停止调整大小时,不会调用此方法,而是调用 componentResized-method。
当我将我的重绘方法(或官方重绘方法)添加到像这样的“实时”调整大小事件时,我仍然得到输出,但是,它不是重绘或其他东西
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.paint(this.contentView.getGraphics());
}
Or
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.repaint();
}
当我将应用程序最小化到扩展坞并再次最大化应用程序时,会发生同样的事情,我猜需要相同的代码来解决此问题。
我没有使用Graphics2D
或者什么,只是Graphics
.
您能解释一下如何重新绘制视图吗?
提前致谢,
蒂姆