首先让我解释一下我的意思,以及我打算做什么,我已经知道(并且做过)为了修改TabbedPane中选项卡的外观,我需要扩展XTabbedPaneUI( X = Basic,或者您希望扩展的任何TabbedPaneUI)并覆盖tabbedPaneUI的某些方法,并将新UI设置为我的tabbedPane将要使用的UI(myTabbedPane.setUI(new MyNewTabbedPaneUI());
),例如,在扩展名为我可以这样做:
@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中没有tab对象这样的东西,所以任何帮助找到那个,或者实现我想要做的事情? (向每个选项卡或JTabbedPane本身添加更多信息,以便在绘制选项卡时可以使用更多数据?)
答案 0 :(得分:2)
我会考虑延长TabbedPaneUI
的最后手段。
您可以设置标签的背景颜色,如here所示。
您可以调整窗格的背景颜色,如here所示。
您可以完全替换标签组件,如TabComponentsDemo
所示。
请注意,标签组件必须是不透明的。