【问题标题】:Swing: Custom LaF for JTabbedPane component subclassSwing:JTabbedPane 组件子类的自定义 LaF
【发布时间】:2013-04-17 05:59:22
【问题描述】:

如何子类化 JTabbedPane 并为子类的每个实例赋予与默认 LaF 不同的外观?我仍然想访问默认的 JTabbedPanel,因此不能简单地覆盖全局 LaF。

谢谢。

【问题讨论】:

    标签: java swing look-and-feel


    【解决方案1】:

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

    例如设置一个特定的 JTabbedPane 使用 Metal Look and Feel 使用:

    JTabbedPane fooPane = new JTabbedPane();
    fooPane.setUI(MetalTabbedPaneUI.createUI(fooPane));
    

    在创建 JTabbedPane 的子类(如您所做的那样)时,您需要像这样覆盖方法 updateUI():

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

    【讨论】:

    • 所以,这就是我在构造函数中所做的:this.setUI(MetalTabbedPaneUI.createUI(this)); 并且(在 OS X 上)当我使用 MetalPane 而不是 JTabbedPane 时,它​​似乎没有任何影响
    • 为您的用例更新了我的答案。这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 2013-01-03
    • 2018-09-11
    • 1970-01-01
    • 2019-11-23
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多