Использование элементов управления / свойств Java во время выполнения? - PullRequest
0 голосов
/ 26 ноября 2009

Я не могу заставить этот оператор работать во время выполнения.

textWords.setText(item);

textWords - это объект, setText - это метод, а item - целое число.

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

Нет ошибки, во время выполнения она просто ничего не делает!

public class frmMain extends javax.swing.JFrame {
  public frmMain() {
    initComponents();
    textWords.append("Bryan"); // THIS works!! but this only                                       //happens when the form is initialized, not very usefull
}
 //Other pre generated code here.

private void displayItem() {
    //Method I created to help me catch data 
    // and make a call to this form.
    // none of these are working.
    txtTest.setText(item);

    textWords.setText(item);
    textWords.insert("Bryan",1);
    textWords.append("number");
}

Ответы [ 2 ]

0 голосов
/ 01 декабря 2009

Вы уверены, что вносите изменения в EDT? Изменение компонентов графического интерфейса в любом другом потоке может привести к неопределенным результатам.

Попробуйте добавить этот код в начале displayItem ():

 if (!SwingUtilities.isEventDispatchThread()) {
     SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            displayItem();
        }
    });
    return;
 }

Если вызов displayItem отсутствует в EDT, он создает исполняемый файл и повторно отправляет его в EDT.

См. Также http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html

0 голосов
/ 26 ноября 2009

Я предполагаю, что вам нужно:

textWords.setText(Integer.toString(item));

т.е. вам нужно преобразовать «элемент» (целое число) в строку. Вы можете сделать это по-другому, таким образом:

textWords.setText("" + item);
...