Java JFrame窗口在Win10下裁剪,MacOS下不裁剪

Posted

技术标签:

【中文标题】Java JFrame窗口在Win10下裁剪,MacOS下不裁剪【英文标题】:Java JFrame window is clipped under Win10, but not under MacOS 【发布时间】:2021-08-03 06:55:46 【问题描述】:

我正在为 Mac 和 Win10 开发一款教育应用。

我的画布窗口继承自 JFrame,并声明为固定大小:

        setSize(1250,732);
        setMinimumSize(getSize()); //fixed window size
        setMaximumSize(getSize());

窗口的交互内容是在一个 JComponent 后代中完成的,我将其添加到框架中:

        getContentPane().add(new CartesianCanvas());

CartesianCanvas 的大小与其父 JFrame 相同。

在 Win10 下启动时窗口被剪裁——右侧和底部边缘缺少大约 15 个像素的宽度和高度。什么给了?

【问题讨论】:

"declared to a fixed size" 这是错误的尺寸(除了您的机器、您使用的 PLAF 和 Java 版本之外的任何设备。 . 事实上,我只是添加我的复制/粘贴注释。在弄清楚如何布局组件后,调用pack() 以获得合适的大小。这是注释: Java GUI 必须工作不同的操作系统、屏幕尺寸、屏幕分辨率等。在不同的语言环境中使用不同的 PLAF。因此,它们不利于像素完美的布局。而是使用布局管理器,或者.. ..combinations of them 以及 white space 的布局填充和边框。 【参考方案1】:

上面的代码片段不是使窗口不可调整大小的正确方法。正确的做法是:

setResizable(false);

也就是说,由于查看设备选项和分辨率(包括多显示器、电视接口和投影仪)过多,Java、.Net 和 JS 等框架可能是时候改进其图形库以提供像素的替代方案了- 基于坐标?

所有应用开发者都面临同样的问题。强迫每个应用程序开发人员编写可以在系统级别通用的代码是没有意义的。同意?不同意?

【讨论】:

以上是关于Java JFrame窗口在Win10下裁剪,MacOS下不裁剪的主要内容,如果未能解决你的问题,请参考以下文章

Java Swing如何让JFrame获得焦点

Java中的JPanel与JFrame

java 图形化界面笔记(1)

Java jFrame toBack() 和可聚焦

Java - 关闭 JFrame 窗口时的消息

如何从Java最小化JFrame窗口?