我在从Java 1.7升级到Java 1.8后遇到了一些摇摆边框的问题:
在所有我的按钮上,我需要一个实心的背景颜色和实线的边框,因此我通过UIManager定义了它。在Java 1.7和以前的版本中,一切看起来都很好,但在Java 1.8上,边框混乱不堪。单选按钮也看起来非常奇怪和锯齿状。复选框也似乎有问题。
为了演示,我创建了一个包含几个组件的简短示例:
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
public class CompDemo extends JFrame
{
public CompDemo()
{
setLayout(new FlowLayout());
add(new JButton("button"));
add(new JTextField("txt"));
add(new JComboBox<String>());
add(new JRadioButton("radio"));
add(new JToggleButton("toggle"));
add(new JCheckBox("check"));
pack();
setVisible(true);
}
public static void main(String[] args)
{
UIManager.put("Button.background", Color.LIGHT_GRAY);
UIManager.put("Button.border", BorderFactory.createCompoundBorder(BorderFactory
.createLineBorder(Color.RED), BorderFactory.createLineBorder(Color.CYAN)));
new CompDemo();
}
}
这里您可以查看在不同JDK版本下的输出结果(缩放至200%,未开启抗锯齿):
第一张图片为Java 7u60,显示得非常正确。
在第二张图片中,我圈出了差异之处。
第三张图片为Java 8u11,你可以看到边框相当混乱(下拉箭头也看起来很奇怪)。我使用了青色LineBorder和红色LineBorder,这样你就可以更清楚地看到问题所在。 我的操作系统是Windows 8 x64,如果这有关系的话。
请问有人能告诉我为什么在Java 8下会有这么大的差异吗?我是错过了什么,还是Java 1.8真的把边框搞糟了? 我需要提交错误报告吗?还是只需进行一些调整即可使其再次正常显示?
谢谢, gc