2

首先让我解释一下我的意思,以及我打算做什么,我已经知道(并且确实)为了修改 TabbedPane 中选项卡的外观,我需要扩展 XTabbedPaneUI(X = Basic , 或您希望扩展的任何 TabbedPaneUI) 并覆盖 tabbedPaneUI 的某些方法, 并将新 UI 设置为我的 tabbedPane 将使用的 UI ( myTabbedPane.setUI(new MyNewTabbedPaneUI());), 例如, 在 ui 的扩展中我可以这样做:

    @Override
    protected void paintTabBackground( Graphics g, int tabPlacement,int tabIndex, int x, int y, int w, int h, boolean isSelected ) {        
        Color bgColor = tabPane.getBackgroundAt(tabIndex); 
        //tabPane is the way the BasicTabbedPaneUI makes reference to the JTabbedPane that is making use of him
        //Do the painting of the tab background
    }

方法内的第一行(也是唯一的)将返回我在要绘制的选项卡上设置的背景颜色(myTabbedPane.setBackgroundAt(0, desiredColor);) 然后我可以在我自己的 TabbedPaneUI 实现中使用该颜色,但是我应该怎么做才能向每个选项卡添加更多信息,例如我想要绘制的背景百分比,或者任何类型的信息不(不能)存储在 TabbedPaneUI 的实现中,因为它是动态的并且取决于每个单独的选项卡,所以我想,让我们在每个单独的选项卡中添加该信息,然后意识到我不知道是哪种对象是选项卡,我无法在任何地方找到选项卡是什么类型的对象,恐怕java中没有选项卡对象这样的东西,所以任何帮助找出或实现我想做什么?(向每个选项卡或 JTabbedPane 本身添加更多信息,以便在绘制选项卡时使用更多数据?)

PS:我知道这可能有点令人困惑,所以请对我要解释的内容有任何疑问,请发表评论

4

1 回答 1

2

我会考虑延长TabbedPaneUI最后的手段。

请注意,选项卡组件必须是不透明的。

imqge

于 2012-11-12T19:01:00.973 回答