एक और समाधान नियंत्रक को आपके नियंत्रक वर्ग से सेट करना है, जैसे ...
public class Controller implements javafx.fxml.Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
// Implementing the Initializable interface means that this method
// will be called when the controller instance is created
App.setController(this);
}
}
यह समाधान मैं के बाद से कोड कुछ हद तक गंदा है उपयोग करने के लिए एक पूरी तरह कार्यात्मक FXMLLoader उदाहरण है, जिसमें ठीक से स्थानीय संसाधनों आदि
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml"));
}
संभालती बनाम
@Override
public void start(Stage stage) throws Exception {
URL location = getClass().getResource("/sample.fxml");
FXMLLoader loader = createFXMLLoader(location);
Parent root = loader.load(location.openStream());
}
public FXMLLoader createFXMLLoader(URL location) {
return new FXMLLoader(location, null, new JavaFXBuilderFactory(), null, Charset.forName(FXMLLoader.DEFAULT_CHARSET_NAME));
}
मैं ने पाया है कि स्थिर कार्यों का उपयोग कर आसान है और इस समाधान की तुलना में बेहतर काम करता है मेरे लिए कम से कम)। नियंत्रणों तक पहुंचने में सक्षम होने की कुंजी कक्षा के सार्वजनिक स्थैतिक उदाहरण के लिए है जिसमें सभी नियंत्रणों और सार्वजनिक तरीकों तक पहुंच है। – betaman
मुझे पता है कि यह एक पुराना सवाल है ... लेकिन क्या कोई भी उत्तर w.r.t. पर अधिक जानकारी प्रदान कर सकता है। जहां कोड की पहली 3 पंक्तियां और जहां getFooController() जाता है? – adeena
@डेना, FooController आपके द्वारा "foo.fxml" में परिभाषित एक नियंत्रक वर्ग है, और कोड में कोई getFooController() नहीं है। –