请注意,我尚未在Windows计算机上仅在Mac计算机上对此进行测试。 我不确定这是否也会在Windows计算机上发生…
当我调整Java应用程序的大小时,内容是不可见的。我已经找到一种方法来解决它 后 调整其大小,但不能 同时 在用户调整窗口的大小。
我没有使用Swing之类的东西,因为它会使我的二进制文件变慢(我认为)。
结构是这样的:
Frame 我的主窗口
Containe r的内容视图 main-window
Container 基于子视图,包括paint(Graphics g)-方法
我已将所有侦听器添加到其中 My main-window ,现在可以 在*调整窗口大小 后 重新绘制 Content-view
。*
public void componentResized(ComponentEvent e) {
this.contentView.paint(this.contentView.getGraphics());
}
我谨防使用paint(getGraphics())-method并不是执行此操作的好方法,但是由于repaint()-method根本不执行任何操作,因此这是唯一可行的方法。
调整大小时,所有绘制的内容将变得不可见。但是,当我Button向自己添加-instance Content-view 并调整其大小时
Main-window ,按钮不会变得不可见。
我 是 能够追踪“live’-resize事件:
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
}
当我开始调整大小时,不会调用此方法。
调整大小时,我在日志中每调整像素大小都会生成“实时调整大小”。
当我停止调整大小时,不调用此方法,componentResize-method会调用。
当我将这样的重绘方法(或正式的重绘方法)添加到像这样的“实时”调整大小事件中时,我仍然会得到输出,但是,它没有进行重绘
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.paint(this.contentView.getGraphics());
}
要么
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.repaint();
}
当我将我的应用程序最小化到扩展坞并再次最大化应用程序时,会发生相同的事情,我猜想需要使用相同的代码来解决此问题。
我没有使用Graphics2D,什么也没有Graphics。
您能否解释一下如何重绘视图?
预先感谢,蒂姆