繁体   English   中英

为什么 getWidth 函数在 JAVA 中返回更多值?

[英]Why does getWidth function return more value in JAVA?

我预计输出是 120 和 220。但现在输出是 136 和 220。为什么?

import java.lang.*;
import java.awt.GraphicsConfiguration;
import javax.javax.swing.*;
import javax.swing.JFrame;

public class Main {
    static GraphicsConfiguration gc;
    public static void main(String[] args) {
        JFrame frame = new JFrame(gc);
        frame.setVisible(true);
        frame.setSize(120,220);
        System.out.println(frame.getWidth());
        System.out.println(frame.getHeight());
    }
}

setSize(int width, int height)

该方法更改几何相关数据。 因此,本机窗口系统可能会忽略此类请求,或者它可能会修改请求的数据,以便以与桌面设置紧密对应的方式放置和调整 Window 对象的大小。

但这是java 7,java 8 doc对此并不高。

这是因为窗口装饰 - 最小化、最大化、关闭按钮。 我在 Windows 10 上对此进行了测试,创建的窗口不能调整为小于 136 像素的大小。 正如已经指出的,窗口系统可以根据需要改变几何形状。

这是Windows测试的屏幕截图:

带框架装饰的窗户

此外,如果您关闭窗口装饰,窗口将具有指定的大小 (120x220):

JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setVisible(true);
frame.setSize(120, 220);
System.out.println(frame.getWidth() + " - " + frame.getHeight());

打印:120 - 220

设置最小尺寸也可能存在问题,因此setSize不会低于最小尺寸,但事实并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM