2012-12-27 77 views
4

如何获取扩展JFrame的宽度和高度? (通过完成)扩展jframe的大小?

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 
+0

嗯什么是错与调用'的getWidth'和'的getHeight '将JFrame设置为'JFrame.MAXIMIZED_BOTH'后 –

+0

它给了我只有以前的设置宽度和高度 –

回答

1

frame.setVisible(true)

嗯什么错 JFrame的设置JFrame.MAXIMIZED_BOTH

后调用的getWidth和getHeight

你确定您在JFrame可见并且尺寸状态已更改后调用它?即:

frame.setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 
frame.pack(); 
frame.setVisible(true); 

System.out.println(frame.getWidth()+" "+frame.getHeight()); 

另一种解决方案通过

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
Rectangle bounds = env.getMaximumWindowBounds(); 
System.out.println("Screen Bounds: " + bounds); 

仅仅是让屏幕大小,因为这将是JFrame的大小JFrame.MAXIMIZED_BOTH状态

1
frame.getContentPane().getSize(); 

你就失去了装饰标题栏大小。或者获得rootPane,甚至更好。添加到我的评论

double width = frame.getSize().getWidth(); 
double height = frame.getSize().getHeight(); 
+0

它不起作用,它仍然给我以前的设置尺寸。 –

4

+0

+1,差不多......如果你有2个或更多的显示器,该怎么办? :) - 以前的时间没有为我工作:我的框架只在1台显示器 – 2012-12-27 12:36:32

+0

@matheszabi好问题可能会通过所有连接的显示器,并积累他们的宽度/高度将诀窍 –

+0

您的解决方案确实工作,但有一些捕获正如matheszabi所说,它不依赖于jframe aso。工程。 Fouad @ AndrewG.H给出了正确的答案 –