1

我似乎遇到了在 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() ,但似乎都不起作用。我错过了什么吗?

4

1 回答 1

1

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

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

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

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

于 2013-11-21T00:45:31.560 回答