java swing jframe size返回屏幕上更大的维度
在调查应用程序中的一些问题时,我发现了一些奇怪的事情 基本上,本SSCCE应说明问题:java swing jframe size返回屏幕上更大的维度,java,swing,Java,Swing,在调查应用程序中的一些问题时,我发现了一些奇怪的事情 基本上,本SSCCE应说明问题: public class MainFrame extends JFrame { public MainFrame() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setExtendedState(JFrame.MAXIMIZED_BOTH); pack
public class MainFrame extends JFrame {
public MainFrame() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
pack();
}
}
public class Main {
public static void main(String[] args) {
MainFrame mf = new MainFrame();
mf.setVisible(true);
System.out.println(mf.getSize());
}
}
不知何故,在分辨率为1280x1024的监视器上,这会导致:
java.awt.Dimension[宽度=1296,高度=1010] 有人知道这是怎么发生的吗?尤其是宽度比实际情况要高
问候。不知道那里发生了什么事。如果您只是尝试根据可用屏幕空间将帧设置为其最大大小,请尝试以下替代方法:
import java.awt.*;
import javax.swing.*;
public class JFrameExtended
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle maxBounds = env.getMaximumWindowBounds();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(maxBounds);
f.setVisible(true);
System.out.println("Frame size: " + f.getSize());
}
});
}
}
窗口边框可能有8像素宽。最大化时,Windows会调整窗口的大小,以便客户端区域的宽度达到1280像素。窗口的整个宽度为8+1280+8像素=1296像素。高度也是如此
在多个显示器上使用扩展桌面时,有时会注意到当一个窗口在一个屏幕上最大化时,可以在相邻的屏幕上看到该窗口的边框。java.awt.Dimension[width=1296,height=1000]此处:你的操作系统是什么?Windows Vista 64位,但如果它显示宽度=1296,你的操作系统也是错误的,对吗?你的显示器是什么?