我似乎遇到了替换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(),但似乎都没有用。我错过了什么吗?
答案 0 :(得分:1)
我试图调用repaint()和update(),但似乎都没有用。我错过了什么吗?
从可见GUI添加(或删除)组件时,常规形式为:
panel.add(...);
panel.revalidate();
panel.repaint();
默认情况下,组件的大小为零,因此您需要使用revalidate()来调用布局管理器,以便为组件分配大小。