Как установить текст 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 отображается нормально. Пожалуйста, помогите, как я могу решить эту проблему?


person Arash    schedule 05.11.2014    source источник
comment
Вы не инициализировали TextArea. Добавьте его перед установкой текста внутри конструктора.   -  person Nabin    schedule 05.11.2014
comment
Как я могу инициализировать этот TextArea перед конструктором?   -  person Arash    schedule 05.11.2014


Ответы (1)


Ваш класс является контроллером, и ему не нужен конструктор. Все начальные настройки можно сделать в методе initialize. Вы можете найти здесь основное руководство.

Ваша текстовая область 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);
        });
    }
}
person José Pereda    schedule 05.11.2014