Загрузка JTextField - PullRequest
       68

Загрузка JTextField

0 голосов
/ 02 ноября 2011

У меня проблема ... В моем коде она есть, чтобы текст выводился в JTextField.когда я запускаю программу, это не так.Тем не менее, если я направляю после того, как мой код для помещения текста в JTextField, поместил JOptionPane, тогда он работает ...

У кого-нибудь есть решение сделать обновление JTextField без наличия JOptionPane после?

Мой код:

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

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

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Существует две причины, по которым это может не сработать:

  1. Вы звоните setText() из-за пределов основного потока (Swing)
  2. Вы звоните setText() изв основном потоке (Swing)

В первом случае оберните вызов в SwingUtilities.invokeLater().

В последнем случае вы устанавливаете текст, но блокируетеКачаем нить, поэтому изменение не может быть отображеноВам нужно будет создать фонового работника, чтобы выполнить работу, и использовать SwingUtilities.invokeLater() для обновления текстового поля из вашего рабочего потока.

[EDIT] См. Учебное руководство по Swing для примера того, какиспользовать фоновый поток и как оттуда обновлять пользовательский интерфейс: http://download.oracle.com/javase/tutorial/uiswing/concurrency/interim.html

0 голосов
/ 18 ноября 2011

Почему бы просто не использовать repaint () после обновления текста?

Если память мне не изменяет, это должно решить проблему текста, не добавляемого.

...