我注意到在使用本机外观的Windows上,Java 8(及更早版本)和Java 9(及更高版本)的
TitledBorder
的外观有所不同。从Java 9开始,边框变暗了并且没有圆角。特别是对于嵌套的TitledBorder
,这看起来很令人不安。是否有一种方法可以在使用Java 9时使边框像在Java 8中绘制一样? ![Java 8 vs Java 9](https://istack.dev59.com/RiKrM.webp)
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
public class TitledBorderWithJava9 {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
//...
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(150, 100);
JPanel panel = new JPanel();
frame.add(panel);
TitledBorder border = BorderFactory.createTitledBorder("Title");
panel.setBorder(border);
frame.setVisible(true);
});
}
}
UIManager.put("属性", "值")
更改UI属性,若Java版本大于8。 - Frédéric PerroncreateTitledBorder
以获得所需的外观(我不会讨论品味)。实际问题是,为什么系统的外观和感觉使用(柔和的)斜面边框,而实际的窗口外观使用单色线边框。 - Holger