[英]Changed appearance of Swing TitledBorder since Java 9
我注意到 Java 8(及更早版本)和 Java 9(及更高版本)在具有本機外觀的 Windows 上的TitledBorder
外觀有所不同。 從 Java 9 開始,邊框變暗並且沒有圓角。 尤其是嵌套的TitledBorder
,這看起來令人不安。 有沒有辦法使用 Java 9 並像 Java 8 一樣繪制邊框?
MWE:
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);
});
}
}
根據對問題的評論,以下方法接近預期的結果(顏色和尺寸是正確的,但我沒有像在 Java 8 中那樣設法獲得圓角)。
Border baseBorderOuter = BorderFactory.createLineBorder(new Color(213, 223, 229), 1, true);
Border baseBorderInner = BorderFactory.createLineBorder(Color.WHITE, 1, true);
Border baseBorder = BorderFactory.createCompoundBorder(baseBorderOuter, baseBorderInner);
TitledBorder border = BorderFactory.createTitledBorder(baseBorder, "Title");
panel.setBorder(border);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.