【问题标题】:Java: Can't append textAreaJava:无法附加 textArea
【发布时间】:2011-11-04 17:44:08
【问题描述】:
public void actionPerformed(ActionEvent evt) {
    input = textField.getText();
    textArea.append(input);
    textField.setText("");
    textArea.setCaretPosition(textArea.getDocument().getLength());
}

此方法有效,并且会在调用该方法时附加变量输入。

public void start(){

    System.out.println("Starting");
    int questionNumber = 0;
    Counter counter = new Counter();
    counter = pickQuestions();
    System.out.println("here");
    textArea.append("**Applet**");
    System.out.println("now here");
    doQuestion(counter, questionNumber);

}

此方法不起作用,并且不会附加“Applet”,但它会打印“here”,然后打印“now here”。

有人知道这可能的原因还是我没有提供足够的信息? 谢谢!

【问题讨论】:

  • 你得到任何(空指针)异常吗?
  • 如果doQuestion 阻塞(意味着start 没有返回),UI 将被冻结并且textArea 不会更新。在调用doQuestion 之后添加println 以测试它是否通过了该调用。
  • 打印出来了。我认为问题出在 Software Monkey 所说的

标签: java methods applet textarea textfield


【解决方案1】:

问题在于,在第二种情况下,您从 GUI 事件调度线程以外的线程更新 GUI 组件。对 GUI 组件的任何操作都必须从 EDT 完成。

要在 AWT 中执行此操作,请使用 invokeLater() 将自定义 Runnable 注入到 EventQueue 中。

【讨论】:

  • 嗯...因为我在整个类文件中都有 System.out.println,我想将它们更改为 textArea.append 的
猜你喜欢
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2016-09-05
  • 2015-04-11
  • 2016-10-01
  • 1970-01-01
  • 2021-06-01
相关资源
最近更新 更多