1

私は新しい javafx アプリケーションを作成しています - 初めて javafx を使用します。次のように、FXML を使用して GUI を作成し、これからステージを作成しています。

public void start(Stage stage) throws Exception {

    Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));        
    Scene scene = new Scene(root);        
    stage.setScene(scene);
    stage.show();
}

FXML には、MainController を指す単一のボタンがあり、クリックすると handleButton メソッドが呼び出されます。

public class MainController は Initializable を実装します {

@FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");         
}

上記のコードは正常に動作し、コンソールに「期待どおりにクリックされました」と出力されます。しかし、私が欲しいのは、実行する Web リクエストとその他のコードです。

public class MainController は Initializable を実装します {

@FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!"); 
    HttpClient client = new HttpClient();        
}

ボタン ハンドラー内に HTTP クライアント オブジェクトを作成しようとすると、次のエラーが発生します。

run:私をクリック !Glass が -[GlassViewDelegate sendJavaMouseEvent:]:src/com/sun/mat/ui/GlassViewDelegate.m:541 で未解決の Java 例外を検出しましたjavafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1440) com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager. java:217) com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) com.sun.javafx.event .BasicEventDispatcher。

だから私の質問は:

a) なぜこれが起こっているのですか? printlns や変数の割り当てなどの単純なものが正常に機能しているのに、HTTPClient の作成でこのエラーがスローされるのはなぜですか。

b) javafx でボタンのクリックを処理する正しい方法は何ですか - スイングでは、SwingWorker を使用して、GUI から離れてコアアプリケーションの作業を行います。

どんな助けも楽しみにしています!

4

1 に答える 1