JTextField加载

时间:2011-11-02 15:53:02

标签: java swing jpanel jtextfield joptionpane

我遇到了问题.. 在我的代码中,我有它,所以文本应输出到JTextField。当我运行程序时,它没有。但是,如果我将我的代码放入JTextField后放入一个JOptionPane然后就可以了...

任何人都有一个解决方案,可以在没有JOptionPane的情况下更新JTextField吗?

我的代码:

// Works:
JTextField.setText("String");
JOptionPane.showMessageDialog(null, "String");

// Doesn't Work:
JTextField.setText("String");
//JOptionPane.showMessageDialog(null, "String");

2 个答案:

答案 0 :(得分:2)

这可能会导致失败的原因有两个:

  1. 您正在从主(Swing)主题
  2. 之外调用setText()
  3. 您正在主(Swing)主题
  4. 中调用setText()

    在第一种情况下,将呼叫包裹在SwingUtilities.invokeLater()

    在后一种情况下,您设置了文本,但是您正在阻止Swing线程,因此无法呈现更改。您需要创建一个后台工作程序来完成工作,并使用SwingUtilities.invokeLater()更新工作线程中的文本字段。

    [编辑] 有关如何使用后台线程以及如何从那里更新用户界面的示例,请参阅Swing教程:http://download.oracle.com/javase/tutorial/uiswing/concurrency/interim.html

答案 1 :(得分:0)

为什么不在文本更新后使用repaint()?

如果记忆对我有用,应该解决不附加的文本问题。