मैं JavaFX सीखने की कोशिश कर रहा हूं, और मैंने नीचे दिखाया गया कोड लिखा है, हालांकि मुझे लगता है कि मुझे कोड की इस लाइन से परेशानी हो रही है:

btn.setOnAction(new EventHandler<ActionEvent>()

जहाँ यह setOnAction को रेखांकित करता है, और इस त्रुटि को प्रिंट करता है:

 The method setOnAction(EventHandler<ActionEvent>) in the type ButtonBase is not applicable for the arguments (new EventHandler<ActionEvent>(){})
import java.awt.event.ActionEvent;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Test extends Application{
    public static void main(String[] args){
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World' ");
        btn.setOnAction(new EventHandler<ActionEvent>(){
             @Override
             public void handle(ActionEvent event) {
                 System.out.println("Button clicked");
             }
         });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();

    }
}

मैं क्या गलत कर रहा हूं?

2
user5568139 29 नवम्बर 2015, 22:17

2 जवाब

सबसे बढ़िया उत्तर

आपने आयातित ईवेंट श्रोता को कोड की इस पंक्ति को बदल दिया है

import java.awt.event.ActionEvent;

इसके साथ

import javafx.event.ActionEvent;

और आप इस तरह से लैम्ब्डा अभिव्यक्ति का उपयोग कर सकते हैं

btn.setOnAction((event) -> {
  System.out.println("Button clicked");
});
5
RAP 29 नवम्बर 2015, 19:27

आप स्विंग के साथ Javafx को मिला रहे हैं। बदलने के

import java.awt.event.ActionEvent;

साथ में

import javafx.event.ActionEvent;
1
Reimeus 29 नवम्बर 2015, 19:22