【问题标题】:Replacing one JTextArea with another将一个 JTextArea 替换为另一个
【发布时间】:2011-04-26 15:02:49
【问题描述】:

在我的 GUI 中,在附加到容器的 JScrollPane 中有一个 JTextArea。

        ta = new JTextArea();
        jsp = new JScrollPane(ta);

        container.add(jsp);

我希望能够将这个 JTextArea 替换为另一个 JTextArea,例如

JTextArea ta1 = new JTextArea("New text area");
ta = ta1;
ta.repaint();

但是,当我重新分配这个 JTextArea 时,GUI 中没有任何变化。有没有更好/正确的方法来做到这一点?

【问题讨论】:

  • 在JTextArea被替换之前应该发生什么

标签: java user-interface jtextarea


【解决方案1】:

你应该只用新的替换 textarea 的文本。

newTextArea.setText(oldTextArea.getText())

或者干脆把新的文字放在

newTextArea.setText("new text")

【讨论】:

  • 是的,我实际上只是自己解决了这个问题。谢谢!只是出于兴趣,您是否知道替换 JTextArea 的方法(即我最初是如何尝试这样做的)?
  • 我不明白需要创建新的 JTextArea。如果它已经创建并且它在 GUI 中,那么只需替换文本并将其从 GUI 中删除。如果未创建,则只需替换文本即可,无需创建新文本。
【解决方案2】:
ta = ta1; 

如果您想在 GUI 中显示组件,那么您需要将组件添加(...)到 GUI。

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

更改引用不会将组件添加到 GUI。

这是您尝试使用变量引用来访问 GUI 组件的第二个问题。我再次问这个问题,你为什么要这样做。您的上一个问题不需要它,我怀疑这个问题是必需的。你有某种设计问题。

【讨论】:

  • @Matt,您仍然没有解决您的主要问题,因为您没有说明您的要求是什么,因此我们无法建议可能的更好方法。您所说的只是您如何尝试解决不是必需的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多