У меня возникают проблемы с границами swing после перехода с Java 1.7 на Java 1.8:
На всех моих кнопках мне нужен сплошной фоновый цвет и сплошная граница, поэтому я определил, что через UIManager. На Java 1.7 и предыдущих версиях все выглядит хорошо, но на Java 1.8 граница все испортилась. Также RadioButton выглядит очень странно и неровно. У CheckBoxes также есть проблема.
Для демонстрации я создал короткий образец с несколькими компонентами:
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? Должен ли я записывать сообщение об ошибке? Или есть только несколько настроек, которые нужно сделать, чтобы снова выглядеть хорошо?
Спасибо, дс