1

JavaFX & Scene Builderで、コンソールにテキストを表示する単一のボタンを取得しようとしています (機能していることを確認するためだけに) が、応答しません。なぜ発砲しないのか、私にはわかりません。ボタンの ID はfx:id="testButtonです。

public class Main extends Application
{
    @FXML // fx:id=testButton
    final Button testButton = new Button("Test");

    private void actionListeners()
    {

        testButton.setOnAction(new EventHandler<ActionEvent>()
        {

            @Override
            public void handle(ActionEvent event) 
            {       
                System.out.println("Working");
            }

        });
    }

    @Override
    public void start(Stage primaryStage) throws IOException 
    {
        Parent page = FXMLLoader.load(Main.class.getResource("TestFXML.fxml"));
        Scene scene = new Scene(page);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Testing");
        primaryStage.show();

        actionListeners();
    }

    public static void main(String[] args) 
    {
        launch(args);
    }
4

2 に答える 2

1

@FXMLタグは、注釈付き変数がFXMLエンジンによって移入されることを意味します。したがってnew Button()、その変数を呼び出すべきではありません。

@FXML通常、変数とハンドラーを設定する fxml コントローラー用の別のクラスがあります。ここで例を参照してください: https://blogs.oracle.com/jmxetc/entry/connecting_scenebuilder_edited_fxml_to

あなたの例では、FXML によって作成された変数を上書きしたか、.fxmlファイルに FXML コントローラーを正しく設定していませんでした。後者のケースを確認するために fxml コンテンツを提供します。

于 2013-10-24T10:52:11.853 に答える