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方法的哦但是这就导致在不同的平台有不同的结果了
大虾有什么好方法解决吗??大家也许问我为何要知道这个尺寸,这只是一段事例代码,实际的业务与这有关哦

解决方案 »

  1.   

    frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
      
    注意,如果该状态在给定平台上不受支持,则什么也不会发生。应用程序可以通过 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) 方法确定特定的状态是否可用。
      

  2.   

    使用JDesktop Application Framework吧,有状态保存功能。一句代码也不用写。NB6.0中集成了。