मेरा Application
वर्ग इस तरह दिखता है:
public class Test extends Application {
private static Logger logger = LogManager.getRootLogger();
@Override
public void start(Stage primaryStage) throws Exception {
String resourcePath = "/resources/fxml/MainView.fxml";
URL location = getClass().getResource(resourcePath);
FXMLLoader fxmlLoader = new FXMLLoader(location);
Scene scene = new Scene(fxmlLoader.load(), 500, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
FXMLLoader
इसी नियंत्रक (में दी गई की एक आवृत्ति बनाता है FXML
के माध्यम से फ़ाइल fx:controller
पहले डिफ़ॉल्ट निर्माता और उसके बाद लागू द्वारा) initialize
विधि:
public class MainViewController {
public MainViewController() {
System.out.println("first");
}
@FXML
public void initialize() {
System.out.println("second");
}
}
आउटपुट है:
first
second
तो, initialize
विधि क्यों मौजूद है? initialize
कंट्रोलर आवश्यक चीजों को इनिशियलाइज़ करने के लिए एक कंस्ट्रक्टर या विधि का उपयोग करने के बीच क्या अंतर है ?
आपके सुझाव के लिए धन्यवाद!
FXMLLoader
, ठीक है? इसलिए मुझे इसinitialize()
पद्धति के इंतजार में कोई लाभ नहीं दिखता है । जैसे ही एफएक्सएमएल लोड होता है, निम्न कोड में@FXML
चर तक पहुंच होती है । निश्चित रूप से, वह इसे स्टार्ट मेथड में करता है और कंस्ट्रक्टर में नहीं, लेकिनinitialize()
उसके मामले में कोई लाभ लाएगा?