如何解决Windows外观和感觉中的JScrollPane绘制白线问题
查看图形用户界面:
注意容器和滚动条之间的白线:
可以让这条线消失吗?
代码:
public class WhitePixels {
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame f = new JFrame("A");
JPanel container = new JPanel();
container.setLayout(new BoxLayout(container,BoxLayout.Y_AXIS));
for (int i = 0; i < 15; i++) {
container.add(new JButton("A"));
}
f.setLayout(new BorderLayout());
//some attempts
JScrollPane sp = new JScrollPane(container);
sp.getVerticalScrollBar().setopaque(false);
sp.getVerticalScrollBar().setBorder(BorderFactory.createEmptyBorder());
sp.setopaque(false);
f.add(sp);
f.pack();
f.setSize(200,200);
f.setLocationByPlatform(true);
f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Windows 10,Java 1.8
解决方法
sp.getVerticalScrollBar().setBorder(BorderFactory.createEmptyBorder());
我把上面的代码改成:
sp.getVerticalScrollBar().setBorder(BorderFactory.createLineBorder(Color.RED));
你会看到白线仍然存在于边框的内侧。
这意味着该线是滚动条绘制的一部分。
我尝试使用 UIManager 更改一些颜色默认值:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
UIManager.put("ScrollBar.thumbHighlight",Color.RED);
UIManager.put("ScrollBar.track",Color.YELLOW);
UIManager.put("ScrollBar.foreground",Color.YELLOW);
UIManager.put("ScrollBar.thumb",new ColorUIResource(Color.YELLOW));
但是没有效果。
我从 UIManager Defaults 获得了上述值,以防您想试试运气。
所以我建议摆脱白线的唯一方法是覆盖 LAF 并进行自己的自定义绘画,这不是我知道该怎么做的任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。