Java Swing:JTabbedPane组件子类的自定义LaF

Java Swing:JTabbedPane组件子类的自定义LaF,java,swing,look-and-feel,Java,Swing,Look And Feel,如何对JTabbedPane进行子类化,并为子类的每个实例提供与默认LaF不同的外观和感觉?我仍然希望访问默认的JTabbedPanel,因此简单地覆盖全局LaF不是一个选项 谢谢。您可以通过调用setUI(TabbedPaneUI UI)方法手动设置JTabbedPane(和大多数其他JComponents)的特定UI实现 例如,要将特定JTabbedPane设置为使用金属外观,请使用: JTabbedPane fooPane = new JTabbedPane(); fooPane.setU

如何对JTabbedPane进行子类化,并为子类的每个实例提供与默认LaF不同的外观和感觉?我仍然希望访问默认的JTabbedPanel,因此简单地覆盖全局LaF不是一个选项


谢谢。

您可以通过调用setUI(TabbedPaneUI UI)方法手动设置JTabbedPane(和大多数其他JComponents)的特定UI实现

例如,要将特定JTabbedPane设置为使用金属外观,请使用:

JTabbedPane fooPane = new JTabbedPane();
fooPane.setUI(MetalTabbedPaneUI.createUI(fooPane));
在创建JTabbedPane的子类(如您所做的)时,您将需要覆盖updateUI()方法,如下所示:

public void updateUI() {
    setUI(MetalTabbedPaneUI.createUI(this));
}

下面是我在构造函数中所做的:
this.setUI(metaltabedpaneui.createUI(this))和(在OS X上)当我使用MetalPane而不是JTabbedPane时,它似乎没有任何影响为您的用例更新我的答案。这有用吗?