Java的bug吗??现在有个问题很让我头疼
我先把代码贴出来把package test;import java.awt.Dimension;import javax.swing.JFrame;
public class TestFrame
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Get MaxSize");
// frame.setSize(300,300);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension ds = frame.getSize();
System.out.println("-------->>>ds="+ds);
}
}大家认为打印什么呢?
肯定是frame最大化时的大小啊?.确实,在windows下运行打的就是这个结果
可是到了linux下运行,居然是
-------->>>ds=java.awt.Dimension[width=0,height=0]把你人气个半死,如果启用frame.setSize(300,300);
那么结果是
-------->>>ds=java.awt.Dimension[width=300,height=300]
实在是让人郁闷啊.
这似乎可以证明linux下运行frame.setExtendedState(JFrame.MAXIMIZED_BOTH);这个代码的时候,
是没有调setSize方法的哦但是这就导致在不同的平台有不同的结果了
大虾有什么好方法解决吗??大家也许问我为何要知道这个尺寸,这只是一段事例代码,实际的业务与这有关哦
我先把代码贴出来把package test;import java.awt.Dimension;import javax.swing.JFrame;
public class TestFrame
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Get MaxSize");
// frame.setSize(300,300);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension ds = frame.getSize();
System.out.println("-------->>>ds="+ds);
}
}大家认为打印什么呢?
肯定是frame最大化时的大小啊?.确实,在windows下运行打的就是这个结果
可是到了linux下运行,居然是
-------->>>ds=java.awt.Dimension[width=0,height=0]把你人气个半死,如果启用frame.setSize(300,300);
那么结果是
-------->>>ds=java.awt.Dimension[width=300,height=300]
实在是让人郁闷啊.
这似乎可以证明linux下运行frame.setExtendedState(JFrame.MAXIMIZED_BOTH);这个代码的时候,
是没有调setSize方法的哦但是这就导致在不同的平台有不同的结果了
大虾有什么好方法解决吗??大家也许问我为何要知道这个尺寸,这只是一段事例代码,实际的业务与这有关哦
注意,如果该状态在给定平台上不受支持,则什么也不会发生。应用程序可以通过 java.awt.Toolkit#isFrameStateSupported(int state) 方法确定特定的状态是否可用。找这样看来,你的Linux不支持 setExtendedState() 这个方法!//****************************************************************
public void setExtendedState(int state)设置此 frame 的状态。该状态表示为逐位掩码。
NORMAL
指示不设置状态位。
ICONIFIED
MAXIMIZED_HORIZ
MAXIMIZED_VERT
MAXIMIZED_BOTH
Concatenates MAXIMIZED_HORIZ 和 MAXIMIZED_VERT。 注意,如果该状态在给定平台上不受支持,则什么也不会发生。应用程序可以通过 java.awt.Toolkit#isFrameStateSupported(int state) 方法确定特定的状态是否可用。