我似乎遇到了替换JTextPane中的文本的障碍。我有几个JTextPanes,我需要更改现有文本。我可以使用初始文本来执行此操作,但是当我致电更改文档时,我在通话中看到了此更改,但是面板不会更新。

switch(module.getCurrentQuestionNumber())
{
    case 1:
        doc = module8.loadQuestion1();
        udoc = module8.loadQuestion1();

        codeTextPane.setDocument(doc);
        uCodeTextPane.setDocument(udoc);

        toolPane.add(module.loadQuestion1Panel(outputTextPane));
        uToolPane.add(module.loadQuestion1Panel(uOutputTextPane));
        break;

    case 2:
        doc = module8.loadQuestion2();
        udoc = module8.loadQuestion2();

        codeTextPane.setDocument(doc);
        uCodeTextPane.setDocument(udoc);

        toolPane.add(module.loadQuestion2Panel(outputTextPane));
        uToolPane.add(module.loadQuestion2Panel(uOutputTextPane));
        break;
}


module.getCurrentQuestionNumber()返回1时,面板加载,一切正常。当module.getCurrentQuestionNumber()返回2时,doc和udoc都具有正确的信息(我逐步执行了该程序,在第2种情况下我到达了呼叫,文档显示了更新的问题),但这不会更新codeTextPane,也不会toolPane将加载新面板。我试图调用repaint()和update(),但似乎都不起作用。我想念什么吗?

最佳答案

我试图调用repaint()和update(),但似乎都不起作用。我想念什么吗?


从可见的GUI添加(或删除)组件时,一般形式为:

panel.add(...);
panel.revalidate();
panel.repaint();


默认情况下,组件的大小为零,因此您需要revalidate()来调用布局管理器,以便为组件分配大小。

10-04 17:33