JTabbedPane を使用してコンテンツを表示するオープン ソース アプリケーションがあります。このスクリーンショットを見てください:
メイン コンテンツには JSplitPane があり、左側が TreeMenu オブジェクトで、右側が JTabbedPane オブジェクトです。
左パネルからメニューをクリックすると、JTabbedPane.addTab() メソッドを使用して JTabbedPane にメニューの内容が表示されます。
tabbedPane.addTab(menu.getTitle(), menu.getAPanel());
これを行う方法を知る必要があります。関連するタブが既に開いているメニューをクリックすると、新しいタブは追加されず、既に開いているタブにフォーカスが移ります。
たとえば、スクリーンショットでわかるように、私はすでに[コストの種類] タブを開いています。ここで、[ Cost Type ] メニューをもう一度クリックすると、新しい [ Cost Type ] タブが追加されるのではなく、[ Cost Type ] タブにフォーカスが移動するはずです。
メニュー自体には一意の id フィールド (menu.getId()) があります。ただし、メニューをクリックするたびに、menu.getAPanel() は常に APanel の新しいインスタンスを返しました。つまり、Cost Typeメニューを 2 回クリックした場合、最初のクリックと 2 回目のクリックで menu.getAPanel() から返された APanel が同じインスタンスになることはありません。
誰でも助けることができますか?
更新:
わかりました、この質問は他の人を混乱させているようです。正直なところ、私は英語のネイティブスピーカーではありません。そのため、問題を説明するのに苦労しましたが、とにかく解決策を見つけました(MadProgrammerに感謝します)ので、私はこの質問は他の人の利益にはならないと思うので削除する予定ですが、MadProgrammer に敬意を表して、この質問を 2 日間開いたままにし、彼に回答を提出して彼にふさわしい評判を得る機会を与えます。
少し興味のある方のみ:
このケースは私の以前の質問と関係があります。元のソース コードでは、メニューをクリックすると、実際にポップアップ ウィンドウが表示されます。フローを次のように変更しようとしています。メニューをクリックすると、ポップアップ ウィンドウが非表示になり、ポップアップ ウィンドウのコンテンツ パネル (APanel) が取得され、タブのコンポーネントとして JTabbedPane に転送されます。