如何从 BasicTabbedPaneUI PaintTab() 方法获取每个选项卡的文本以及所选选项卡的索引?

问题描述 投票:0回答:1

所以有一点背景知识,我正在创建一个子类来扩展

JTabbedPane()
组件,添加一些额外的方法,并且主要使用
BasicTabbedPaneUI
应用特定的外观。为了自定义选项卡,我一直覆盖
paintTab()
方法,但我无法看到获取所选选项卡索引的方法(以便以不同方式绘制所选选项卡),我也没有能够弄清楚如何获取每个选项卡的文本。

到目前为止,我已经尝试使用

paintTabBackground()
方法(使用与我在
paintTab()
方法中使用的代码相同的代码),但我不相信这是实现我正在寻找的方法,我有浏览了 java 文档,并没有真正看到任何关于我应该使用的其他方法的指示。

myTabbedPaneUI
的当前(相关)代码(我对
BasicTabbedPaneUI
的实现如下:

private static class myTabbedPaneUI extends BasicTabbedPaneUI { 
    @Override
    protected void paintTab(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect) {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.PINK);
        g2d.fillRoundRect(rects[tabIndex].x, rects[tabIndex].y, rects[tabIndex].width, rects[tabIndex].height+20, 6, 6);
        g2d.setColor(Color.BLUE);
        g2d.drawRoundRect(rects[tabIndex].x, rects[tabIndex].y, rects[tabIndex].width, rects[tabIndex].height+20, 6, 6);
        g2d.setColor(Color.BLACK);
        g2d.drawString("Test String", 0, 0);
    }

我或多或少正在寻找一种方法来做这样的事情:

@Override
    protected void paintTab(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect) {
        Graphics2D g2d = (Graphics2D)g;
        if (tabIndex == selectedTabIndex){
            drawSelected();
        } else {
            drawUnselected();
        }

        g2d.drawString(tabText, 0, 0);

    }

感谢任何帮助,提前感谢大家!

java swing jtabbedpane
1个回答
0
投票

BasicTabbedPaneUI 包含受保护的字段 tabPane。所以从paintTab 我们可以访问

int selectedTabIndex = tabPane.getSelectedIndex();
并且
String tabText = tabPane.getTitleAt(tabIndex);
- @SharadPaul

© www.soinside.com 2019 - 2024. All rights reserved.