2012-12-07 59 views
0

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

对不起,如果这个问题有点含糊。

在此先感谢。

+0

将它存储在一个变量..? – Brian

+0

@brian并不是我想要达到的目标。例如,如果我导航到不同的选项卡,则存储JEditorPane对象的变量将存储打开的最新选项卡中的一个,而不是该选项卡仅被导航到的那个变量。不知道这是否有道理。我想要的变量来存储任何打开或导航到任何选项卡的JEditorPane。基本上任何当前正在显示的选项卡。 –

+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(); 
} 

这是一个bett呃可以选择维护一个单独的列表并尝试将其与标签窗格的索引一起维护。

+0

谢谢,这是一个相当不错的解决方案。我会尝试这两种解决方案,看看哪一个适合我现在更好的代码。不过谢谢。 –