【问题标题】:Maximizing JFrame in Java在 Java 中最大化 JFrame
【发布时间】:2016-11-05 22:03:13
【问题描述】:

有几个与此相关的问题,例如herehere,都说最大化JFrame 的方法是使用以下代码:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Some answers have these lines
frame.setVisible(true);                        //reversed

但是,对我来说,不确定这是否是 windows 10 错误/java 8 错误,当我使用此代码时,结果是这样的(无论上面的两行代码是哪种方式):

正如您在图片中看到的,窗口大小正确,但是它略微覆盖了底部,并且与左侧略有偏移。有没有办法解决这个问题,或者通过使用代码点击JFrame 上的最大化按钮来实际最大化程序?

编辑
这是一个演示问题的 MCVE:

import java.awt.GridLayout;
import javax.swing.JFrame;

public class CDBurner extends JFrame {
    private static final long serialVersionUID = -6027473114929970648L;

    private CDBurner() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(1, 1));
        setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
        setVisible(true);
        setLocationRelativeTo(null);
        requestFocus();
    }

    public static void main(String[] args) {
        new CDBurner();
    }
}

【问题讨论】:

标签: java windows swing jframe fullscreen


【解决方案1】:

线

setLocationRelativeTo(null);

设置框架的位置。如果它发生在

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

它在最大化后更改框架的位置,从而导致您观察到的间隙。您应该删除该行,因为最大化框架会设置其位置(尽管您可以在设置扩展状态之前放置它,在这种情况下它什么都不做)。

【讨论】:

  • 非常感谢。这解决了它
  • 不错的一个!我有我的怀疑,但直到它们在 MCVE 中被揭露之前,我才准备发表评论。
猜你喜欢
  • 1970-01-01
  • 2013-03-22
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
相关资源
最近更新 更多