java - JTabbedPane - 在选项卡周围设置默认边框..?

标签 java swing border jtabbedpane

我在我的应用程序中使用 JTabbedPane。我添加了两个选项卡,它们是自定义类“ContentPanel”的实例。这扩展了 JPanel 并设置了背景、边框等。基本上这意味着我不必设置每个我想应用此配色方案的 JPanel 的属性。我注意到不仅它们的边框出现了,而且另一个边框(我认为它是蓝色的 - 至少在我的屏幕上)出现在这个边框周围,连接到选项卡“选择器”本身(即你点击的按钮得到适当的观点)。我想更改此边框,因为它与金色/棕色配色方案相比看起来很奇怪。有谁知道如何做到这一点?我试过 JTabbedPane.setBorder(Border b) 但这不起作用。这只是在整个事物周围设置了一个边框,包括选项卡选择器……这不是我想要的。

如有任何帮助,我们将不胜感激。

最佳答案

这些颜色在外观中定义。如果您查看 BasicTabbedPaneUI 的代码,您会注意到 installDefaults() 设置了一堆 protected Color 实例变量。它们在 L&F 中定义的键也可在此处获得。

protected void installDefaults() {
    LookAndFeel.installColorsAndFont(tabPane, "TabbedPane.background",
                                "TabbedPane.foreground", "TabbedPane.font");     
    highlight = UIManager.getColor("TabbedPane.light");
    lightHighlight = UIManager.getColor("TabbedPane.highlight");
    shadow = UIManager.getColor("TabbedPane.shadow");
    darkShadow = UIManager.getColor("TabbedPane.darkShadow");
    //...
    // a lot more stuff
    //...
}

如果您不想定义自己的 L&F,您可以在选项卡式 Pane 中设置自定义 UI 委托(delegate):

myTabbedPane.setUI(new BasicTabbedPaneUI() {
   @Override
   protected void installDefaults() {
       super.installDefaults();
       highlight = Color.pink;
       lightHighlight = Color.green;
       shadow = Color.red;
       darkShadow = Color.cyan;
       focus = Color.yellow;
   }
});

您当然可能想要更改这些颜色设置。按照设置,您将看到在何处使用了哪些变量。

关于java - JTabbedPane - 在选项卡周围设置默认边框..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124474/

相关文章:

java - 如何在 JtextPane 中设置行间距?

C# 检查单元格边框是否存在

元素周围的html动态边框

Java 8 : pass method reference to another method

java - 具有多个条件返回的嵌套 if 语句

java - 如何使子组件只处理它可以处理的事件,而使其他事件保持不变?

css - 在边框上使用渐变

java - 将文件存储在字符串中

java - 使用 MVC 时如何仅更新列表中的某些项目?

java - Jframe中上下移动,如何做升降?