问题描述
当我的显示比例设置为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);
}
}
结果:
按钮2和按钮3之间只有一个像素的间隙。我对间隙本身并没有太大的关注,但是这个间隙(在按钮的宽度之内)中的像素充满了垃圾。在屏幕截图中,这似乎是按钮的未对齐部分,但是通常,只要重新绘制此区域(例如,将鼠标悬停在Button 2上),它就可能会改变,通常来自最近重新绘制的组件(通常在重新绘制的区域中更明显)。复杂的应用程序)。由于显示缩放和特定位置值触发的某种尺寸不匹配,大概这只是未初始化的数据。
最后一次使用openjdk-14.0.2测试。 (大概只有在JEP 263在Java 9中添加了对“ hidpi图形”的支持之后,这种情况才会发生。)
我做错什么了吗?有没有办法避免这个问题或解决它?这是BoxLayout
中的问题,还是更根本的问题?基本上,这是怎么回事?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)