我正在从Java Web Start应用程序中创建一个新的JFrame。帧的内容经常更改,并且没有调整大小,因此我重写了revalidate以显式设置帧大小。当我在IDE(Idea)中运行应用程序时,框架的大小是我期望的,基于preferredSize和minimumSize。当我将应用程序捆绑到WebStart应用程序中,部署它并通过javaws运行时,窗口比我预期的要大得多。
我在下面创建了测试用例:
public static void main( String args[] ) {
JFrame sampleFrame = new JFrame() {
public void revalidate() {
super.revalidate();
pack();
_log.severe( "BEFORE: Preferred Size = " + getPreferredSize() + " - Minimum Size = " + getMinimumSize() + " - Size = " + getSize() );
setSize( getPreferredSize() );
_log.severe( "AFTER: Preferred Size = " + getPreferredSize() + " - Minimum Size = " + getMinimumSize() + " - Size = " + getSize() );
}
};
sampleFrame.getContentPane().setPreferredSize( new Dimension( 100, 100 ) );
sampleFrame.pack();
sampleFrame.setVisible( true );
sampleFrame.revalidate();
}
当我通过WebStart运行测试时,控制台会指示:
严重:之前:首选尺寸= java.awt.Dimension [width = 110,height = 130] - 最小尺寸= java.awt.Dimension [width = 10,height = 30] - 尺寸= java.awt.Dimension [宽度= 110,高度= 130] 严重:之后:首选大小= java.awt.Dimension [width = 110,height = 130] - 最小大小= java.awt.Dimension [width = 10,height = 30] - Size = java.awt.Dimension [width = 110,高度= 130]
即使日志显示JFrame大小为110x130,但实际上大约是1300x930!任何想法为什么会这样?
我正在运行Debian 6.0.7(“squeeze”)和Java(TM)Web Start 10.45.2.18-fcs with(Java build 1.7.0_45-b18)
答案 0 :(得分:1)
尝试使用JFrame.setBounds()而不是setSize() - 这是我一直用来调整JFrames的大小,虽然我无法从javadoc中判断出两者之间的区别。
答案 1 :(得分:1)