0

我想在 JavaFX 中从一开始就在 TextArea 中设置一个文本,我在构造函数中使用此代码:

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 不显示,但是当我对 setter 行进行注释时,FXML 正常显示。请帮忙,我该如何解决这个问题?

4

1 回答 1

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);
        });
    }
}
于 2014-11-05T10:00:47.717 回答