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 に答える