具有125%的显示比例的BoxLayout工件

问题描述

当我的显示比例设置为125%(Windows 10)时,这种简单的Java摆动BoxLayout UI显然导致某些像素无法绘制(导致伪像/垃圾):

import javax.swing.*;

public class Test {

    public static void main(String[] args) {
        JPanel container = new JPanel();
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
        for(int i = 1; i <= 3; i++) panel.add(new JButton("Button " + i));
        JFrame frame = new JFrame();
        container.add(panel);
        frame.add(container);
        frame.pack();
        frame.setVisible(true);
    }
  
}

结果:

Screenshot

按钮2和按钮3之间只有一个像素的间隙。我对间隙本身并没有太大的关注,但是这个间隙(在按钮的宽度之内)中的像素充满了垃圾。在屏幕截图中,这似乎是按钮的未对齐部分,但是通常,只要重新绘制此区域(例如,将鼠标悬停在Button 2上),它就可能会改变,通常来自最近重新绘制的组件(通常在重新绘制的区域中更明显)。复杂的应用程序)。由于显示缩放和特定位置值触发的某种尺寸不匹配,大概这只是未初始化的数据。

最后一次使用openjdk-14.0.2测试。 (大概只有在JEP 263在Java 9中添加了对“ hidpi图形”的支持之后,这种情况才会发生。)

我做错什么了吗?有没有办法避免这个问题或解决它?这是BoxLayout中的问题,还是更根本的问题?基本上,这是怎么回事?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...