【问题标题】:Size of extended jframe?扩展jframe的大小?
【发布时间】:2012-12-27 12:25:58
【问题描述】:

如何获取扩展 JFrame 的宽度和高度? (完成)

setExtendedState( getExtendedState() | JFrame.MAXIMIZED_BOTH);

【问题讨论】:

  • 呃,在将 JFrame 设置为 JFrame.MAXIMIZED_BOTH 后调用 getWidth getHeight 有什么问题
  • 它只给了我之前设置的宽度和高度

标签: java swing size jframe maximize-window


【解决方案1】:

添加到我的评论中:

嗯,设置后调用 getWidth 和 getHeight 有什么问题 JFrame 到 JFrame.MAXIMIZED_BOTH

您确定在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.MAXIMIZED_BOTH 状态下 JFrame 的大小

【讨论】:

  • +1,几乎...如果您有 2 台或更多显示器怎么办? :) - 上次对我不起作用:我的框架只在 1 个显示器中
  • @matheszabi 好问题,也许通过所有连接的显示器并累积它们的宽度/高度就可以了
  • 您的解决方案确实有效,但正如 matheszabi 所说,它有一些问题,并且它不依赖于 jframe aso。英。福阿德给出了正确的答案
  • @AndrewG.H. *英文。 Fouad 给出了正确的答案 是的,他做到了,但我还说在设置扩展后在JFrame 上致电getHeight() 忘记说可见,我在答案中添加了这一点。下次最好发布SSCCE,因为在JFrame 可见/pack() 被调用之前,我和其他人可能会看到你没有调用它
【解决方案2】:

frame.setVisible(true)之后:

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

【讨论】:

    【解决方案3】:
    frame.getContentPane().getSize();
    

    您将失去装饰标题栏的大小。或者获取 rootPane,甚至更好。

    【讨论】:

    • 它不起作用,它仍然给我之前设置的尺寸。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2013-09-12
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多