【发布时间】:2013-11-08 21:12:19
【问题描述】:
我正在为新游戏开发在线模式,为了防止作弊,我需要修复窗口大小(并且两个玩家都需要一个大小相同的窗口)。
我使用了'jframe.setResizable(false);'但它似乎是“故障”。
当我单击窗口并将其从屏幕边框移开时,Windows 会将其最小化。
这是一个关于它的视频: http://www.youtube.com/watch?v=AQ7OHJOuLSk&feature=youtu.be
我尝试了以下代码来修复它:
Dimension d = new Dimension(width, height);
panel.getJFrame().setMaximumSize(d);
panel.getJFrame().setMinimumSize(d);
panel.setMaximumSize(d);
panel.setMinimumSize(d);
我创建了一个组件监听器:
if (max_height!=-1){
if (e.getComponent().getSize().getHeight()>max_height){
e.getComponent().setSize((int) e.getComponent().getSize().getWidth(),max_height);
}
}
if (max_width!=-1){
if (e.getComponent().getSize().getHeight()>max_width){
e.getComponent().setSize(max_width,(int) e.getComponent().getSize().getHeight());
}
我尝试使用布局,但没有任何效果。
我现在需要的是防止最小化“故障”(如果是故障)的可能性,或者是一种使 JPanel 不可调整大小的方法。就像 JFrame 窗口的大小改变时一样,JPanel 始终保持不变。它既没有拉伸也没有最小化。
非常感谢您的帮助:)
真诚的菲利克斯
【问题讨论】:
-
首先通过覆盖 getPreferred/Minimum/MaximumSize 为您的主窗格(而不是框架)提供大小提示。将框架上的主布局设置为 GridBagLayout 之类的东西,使用 JFrame#pack 设置框架大小
-
另外,请注意,setResizable(false) 可以改变帧大小,详见here
-
张贴您的
SSCCE证明问题,而不是视频。
标签: java window jframe jpanel resizable