0

表示されている現在の JEditorPane を取得できる方法またはメソッドがあるかどうか疑問に思っていました。たとえば、複数のタブを作成できる JFrame があります。タブが作成されるたびに、新しい JEditorPane オブジェクトが作成され、そのペインのコンテンツがタブに表示されます。現在、新しいタブを開いたり、タブを閉じたり、タブ間を移動したりするたびに、現在のタブのインデックスを取得する ChangeListener を実装しました。私がやりたいことは、新しいタブが開かれたりナビゲートされたりするたびに、このタブにある現在の JEditorPane オブジェクトを取得したいということです。それを達成する方法はありますか?

質問が少し曖昧でしたら申し訳ありません。

前もって感謝します。

4

1 に答える 1

1

これを行う最善の方法は、サブクラスJPanel化してカスタムJPanelをタブ付きペインに追加することです。

public class EditorPanel extends JPanel {

    private JEditorPane editorPane;

    // ...

    public EditorPanel() {
        // ...
        editorPane = new JEditorPane( ... );
        super.add(editorPane);
        // ...
    }

    // ...

    public JEditorPane getEditorPane() {
        return editorPane;
    }
}

新しいタブの追加:

JTabbedPane tabbedPane = ... ;
tabbedPane.addTab(name, icon, new EditorPanel());

そして、タブ付きペインを使用してアクセスする必要がある場合:

Component comp = tabbedPane.getComponentAt(i);
if (comp instanceof EditorPanel) {
    JEditorPane editorPane = ((EditorPanel) comp).getEditorPane();
}

これは、個別のリストを維持し、タブ付きペインのインデックスと一緒に維持しようとするよりも優れた代替手段です。

于 2012-12-07T18:50:00.927 に答える