在 Java 中最大化 JFrame
Maximizing JFrame in Java
有几个与此相关的问题,例如 here and here,都说最大化 JFrame
的方法是使用以下代码:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Some answers have these lines
frame.setVisible(true); //reversed
但是,对我来说,不确定这是否是 windows 10 bug/java 8 错误,当我使用这段代码时,结果是这样的(无论两行的哪个方向上面的代码是):
正如您在图片中看到的,window 是正确的尺寸,但是,它略微覆盖底部,并且略微偏离左侧。有没有办法解决这个问题,或者通过使用代码点击 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();
}
}
行
setLocationRelativeTo(null);
设置框架的位置。如果在
之后
setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
它在最大化后改变了框架的位置,导致你观察到的差距。您应该删除该行,因为无论如何最大化框架都会设置它的位置(尽管您可以在设置扩展状态之前将其放置,在这种情况下它什么都不做)。
有几个与此相关的问题,例如 here and here,都说最大化 JFrame
的方法是使用以下代码:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Some answers have these lines
frame.setVisible(true); //reversed
但是,对我来说,不确定这是否是 windows 10 bug/java 8 错误,当我使用这段代码时,结果是这样的(无论两行的哪个方向上面的代码是):
正如您在图片中看到的,window 是正确的尺寸,但是,它略微覆盖底部,并且略微偏离左侧。有没有办法解决这个问题,或者通过使用代码点击 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();
}
}
行
setLocationRelativeTo(null);
设置框架的位置。如果在
之后setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
它在最大化后改变了框架的位置,导致你观察到的差距。您应该删除该行,因为无论如何最大化框架都会设置它的位置(尽管您可以在设置扩展状态之前将其放置,在这种情况下它什么都不做)。