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最後の手段を延長することを検討します。

  • ここに示すように、タブの背景色を設定できます。

  • ここに示すように、ペインの背景色を調整できます。

  • に示すように、タブ コンポーネント全体を置き換えることができますTabComponentsDemo

タブ コンポーネントは不透明でなければならないことに注意してください。

画像

于 2012-11-12T19:01:00.973 に答える