मेरे Application
वर्ग इस तरह दिखता है:JavaFX FXML नियंत्रक - निर्माता बनाम इनिशियलाइज़ विधि
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
पहले डिफ़ॉल्ट निर्माता लागू द्वारा इसी नियंत्रक (fx:controller
के माध्यम से FXML
फ़ाइल में दी गई) का एक उदाहरण बनाता है और तो initialize
विधि:
public class MainViewController {
public MainViewController() {
System.out.println("first");
}
@FXML
public void initialize() {
System.out.println("second");
}
}
उत्पादन होता है:
first
second
तो, initialize
विधि क्यों मौजूद है? कंट्रोलर आवश्यक चीजों को आरंभ करने के लिए एक कन्स्ट्रक्टर या initialize
विधि का उपयोग करने के बीच क्या अंतर है?
आपके सुझावों के लिए धन्यवाद!
मुझे समझ में नहीं आता है। जिस तरह से वह करता है वह 'FXMLLoader' से अधिक है, है ना? इसलिए मुझे 'प्रारंभिक() '- विधि की प्रतीक्षा में लाभ दिखाई नहीं देता है। जैसे ही FXML लोड हो जाता है, निम्न कोड के पास '@ FXML' चरों तक पहुंच है। निश्चित रूप से, वह इसे प्रारंभिक तरीके से करता है, न कि कन्स्ट्रक्टर में, लेकिन 'प्रारंभिक()' अपने मामले में कोई लाभ लाएगा? – codepleb