2

JTabbedPane を使用して、タブを重ねる必要があるデザインを実装したいと考えています (ここにある画像に示されています: http://imm.io/YAZ )。

正確にはロケット科学ではありませんが、解決策を見つけることができないようです (大規模なグーグル検索の後でも)。

これは JTabbedPane を使用して (おそらく PLAF 経由で) 可能ですか、それともカスタム コンポーネントを作成する必要がありますか?

ありがとう
トーマス

4

2 に答える 2

0

私の知る限り、カスタム コンポーネントが必要です。JTabbedPane を拡張し、新しいタイプのタブを挿入することで実現できると思います。

オーバーラップさせる方法は、選択したタブの paintComponent メソッドを最後に呼び出すことです。つまり、ビューの前面に最も近くなります。

オーバーラップするタブ クラスに関しては、ほとんどすべての JComponent サブクラスをコードに利用できます。背景として透明な PNG を使用してテーマを設定し、タブ自体で public void setOpaque(boolean isOpaque) を呼び出すこともできます。

于 2010-08-10T16:09:59.880 に答える
0

カスタム UI 実装で paintTab をオーバーライドし、前のタブの一部を次のタブの上にペイントすることで、この問題を解決しました。これが可能になったのは、paintTab を使用すると、現在ペイントしているタブの境界だけでなく、タブ領域全体をペイントできるためです。例、タブ A、B、C がある場合:

タブ A は、左の境界線と中央の塗りつぶしをペイントします。タブ B は左の境界線、中央の塗りつぶし、タブ A の右の境界線を塗りつぶします。タブ C は、左の境界線、中央の塗りつぶし、タブ B の右の境界線、そしてそれ自体の右の境界線を描画します (これはペインの最後のタブであるため)。

次に、選択したタブを少し異なる方法で処理します。

上記のソリューションは実装が難しくなく、非常にうまく機能します。

于 2010-08-26T07:58:42.420 に答える