2014-11-05 3 views
0

Я хочу, чтобы установить текст в TextArea от старта в JavaFX, я использую этот код в конструкторе:Как установить текст TextArea в JavaFX из конструктора?

public class Myclass implements Initializable{ 
    @FXML TextArea txta; 
    @FXML Button btn; 
    String msg; 
    Myclass(){ 
     msg="Hello World"; 
     txta.setText(msg);//This line is my setter. 
    } 
    @Override 
    public void initialize(URL location, ResourceBundle resources) { 
     btn.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       msg=msg+"\nHallo Again!!"); 
       txta.setText(msg); 
      } 
     }); 
    } 

Тогда FXML не показывает, но когда я делаю комментировать сеттер линию, FXML шоу как обычно. Пожалуйста, помогите, как я могу исправить эту проблему?

+0

Вы не инициализированы TextArea. Добавьте его перед установкой в ​​него текста внутри конструктора – Nabin

+0

Как я могу инициализировать этот TextArea перед конструктором? – Arash

ответ

1

Ваш класс - это контроллер, и ему не нужен конструктор. Все начальные настройки могут быть выполнены в методе initialize. Вы можете найти here базовый учебник.

Текст область txta будет инициализирована (именно поэтому он имеет @FXML аннотацию), так что это будет достаточно:

public class Myclass implements Initializable{ 

    @FXML private TextArea txta; 
    @FXML private Button btn; 
    private String msg; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

     msg="Hello World"; 
     txta.setText(msg); 

     btn.setOnAction(e->{ 
      msg=msg+"\nHallo Again!!"; 
      txta.setText(msg); 
     }); 
    } 
} 
Смежные вопросы