我目前正在构建一个Java Swing GUI,我想知道用户(比如鼠标)驱动的大小调整是如何处理的。
我的问题是,当我尝试调整我的主窗口的大小时,或者当其他窗口在我的应用程序上打开时,我的应用程序的窗口会变形-它的所有部分都不能很好地响应调整大小或其他窗口。有没有人能诊断出从哪里开始看这个?后续问题,资源也很感谢。
干杯。
发布于 2010-08-31 05:46:15
虽然Rob是正确的,当面板调整大小时,ComponentListener会给你一个回调,但你不应该为了确保你的图形用户界面看起来正确而使用它。相反,您应该确保已经适当地配置了LayoutManager以处理调整大小的问题。调整大小以与标准布局相适应可能是一件令人头疼的事情;我强烈建议您查看MigLayout。
发布于 2010-08-31 05:22:45
添加一个处理componentResized()事件的ComponentListener,即
frame.addComponentListener(new ComponentListener() {
public void componentResized(ComponentEvent e) {
// resize other components, refresh, etc
}
}来自JavaDoc:
当组件的大小、位置或可见性发生更改时,将调用侦听器对象中的相关方法,并将ComponentEvent传递给它。组件事件仅用于通知目的;AWT将在内部自动处理组件移动和大小调整,以便无论程序是否注册ComponentListener,图形用户界面布局都能正常工作。
请参阅http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/ComponentListener.html
发布于 2010-08-31 11:24:50
我的问题是,当我尝试调整主窗口的大小时,或者当其他窗口在我的应用程序上打开时,我的应用程序的窗口就会失真
当另一个应用程序在您的应用程序上打开时,您的窗口不应该被扭曲。Swing足够智能,可以根据需要重新绘制框架。如果它不能正确地重新绘制,那么我猜你已经添加了自定义的绘制代码,并且没有正确地执行它。我唯一能建议的就是永远不要重写框架的paint()方法。
要获得更多帮助,您需要发布演示该问题的SSCCE。
https://stackoverflow.com/questions/3604175
复制相似问题