我遇到了问题.. 在我的代码中,我有它,所以文本应输出到JTextField。当我运行程序时,它没有。但是,如果我将我的代码放入JTextField后放入一个JOptionPane然后就可以了...
任何人都有一个解决方案,可以在没有JOptionPane的情况下更新JTextField吗?
我的代码:
// Works:
JTextField.setText("String");
JOptionPane.showMessageDialog(null, "String");
// Doesn't Work:
JTextField.setText("String");
//JOptionPane.showMessageDialog(null, "String");
答案 0 :(得分:2)
这可能会导致失败的原因有两个:
setText()
setText()
醇>
在第一种情况下,将呼叫包裹在SwingUtilities.invokeLater()
。
在后一种情况下,您设置了文本,但是您正在阻止Swing线程,因此无法呈现更改。您需要创建一个后台工作程序来完成工作,并使用SwingUtilities.invokeLater()
更新工作线程中的文本字段。
[编辑] 有关如何使用后台线程以及如何从那里更新用户界面的示例,请参阅Swing教程:http://download.oracle.com/javase/tutorial/uiswing/concurrency/interim.html
答案 1 :(得分:0)
为什么不在文本更新后使用repaint()?
如果记忆对我有用,应该解决不附加的文本问题。