Использование JTextArea в другом классе - PullRequest
0 голосов
/ 09 марта 2020

У меня есть класс для моего GUI, который я создал с помощью Swing UI Designer. Все компоненты были автоматически сделаны приватными, но теперь мне нужно вывести некоторый текст в переменную с именем consoleTextArea из-за пределов UI.class. Когда я устанавливаю consoleTextArea в publi c stati c, я получаю сообщение об ошибке «UI.form: Cannot bind: поле имеет статус c: действительно. UI.consoleTextArea "

...
public static JTextArea consoleTextArea;
...
...
UI.consoleTextArea.setText("abc");
...

\ src \ действительно \ UI.form: Невозможно связать: поле имеет статус c: действительно. UI. consoleTextArea

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Вы можете изменить значение вашей метки / textArea через экземпляр вашего класса пользовательского интерфейса.

public class UI {

  // ...

  private TextArea consoleTextArea = new TextArea();
  //
  public void setTextInTextArea(String text) {
    this.consoleTextArea.setText(text);
  }
}

Имея такие сеттеры, вы можете манипулировать вашей textArea из другого класса. Этот другой класс, однако, должен иметь доступ к экземпляру пользовательского интерфейса, либо создавать его экземпляр самостоятельно, либо получать его как параметр

public class OtherClass {
  UI ui = new UI();

  public void doSomething() {
    ui.setTextInTextArea("New text");
  }

}

или что-то вроде:

public class OtherClass {
  public void doSomething(UI ui) {
    ui.setTextInTextArea("New Text");
  }
}
0 голосов
/ 09 марта 2020

Вместо того, чтобы делать поле public (не static public), вы должны добавить такой метод в ваш класс:

public void setConsoleTextArea(String value) { consoleTextArea.setText(value); }

Тогда вы можете сделать

UI.setConsoleTextArea("abc");

без необходимости связываться с полем consoleTextArea, которое генерируется автоматически.

...