获取正在显示的当前JEditorPane

时间:2012-12-07 18:21:40

标签: java swing jtabbedpane jeditorpane

我想知道是否有方法或方法可以让我显示当前的JEditorPane。例如,我有一个JFrame,我可以创建几个选项卡。每当创建选项卡时,都会创建一个新的JEditorPane对象,并且该选项卡中将显示该窗格的内容。我已经实现了一个ChangeListener,当我打开一个新的,关闭一个或在标签之间导航时,它当前只是获取当前标签的索引。我想要做的是每当打开或导航到新选项卡时,我想获取驻留在此选项卡中的当前JEditorPane对象。有什么方法可以实现这个目标吗?

很抱歉,如果问题有点模糊。

提前致谢。

1 个答案:

答案 0 :(得分: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();
}

这是维护单独列表并尝试将其与标签窗格的索引一起维护的更好选择。