मैं JavaFX के साथ मेरे सिर स्मैश किया गया है ...JavaFX अन्य अनुप्रयोग
यह जब वहाँ एक आवेदन चल रहा है का कोई उदाहरण है के लिए काम करता है का शुभारंभ:
public class Runner {
public static void main(String[] args) {
anotherApp app = new anotherApp();
new Thread(app).start();
}
}
public class anotherApp extends Application implements Runnable {
@Override
public void start(Stage stage) {
}
@Override
public void run(){
launch();
}
}
लेकिन अगर मैं new Thread(app).start()
करना भीतर एक और आवेदन मुझे एक अपवाद मिलता है जिसमें कहा गया है कि मैं दो लॉन्च नहीं कर सकता।
इसके अलावा मेरे विधि इस तरह अन्य अनुप्रयोग पर एक पर्यवेक्षक के द्वारा कहा जाता है:
@Override
public void update(Observable o, Object arg) {
// new anotherApp().start(new Stage());
/* Not on FX application thread; exception */
// new Thread(new anotherApp()).start();
/* java.lang.IllegalStateException: Application launch must not be called more than once */
}
यह इस जैसे एक JavaFX वर्ग के भीतर है:
public class Runner extends Applications implements Observer {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage){
//...code...//
}
//...methods..//
//...methods..//
@Override
public void update(Observable o, Object arg) {
//the code posted above//
}
}
मैं श्रोताओं लेकिन इसके साथ ObjectProperties उपयोग करने की कोशिश काम नहीं किया मुझे java.util.observer से कुछ तरीकों से अद्यतन विधि के भीतर से यह नया चरण चलाना होगा।
किसी भी सुझाव का स्वागत है। धन्यवाद।
में लपेट आपका इरादा केवल एक nother विंडो खोलने के लिए है? यदि हां, तो आप यूआई थ्रेड के भीतर एक नया 'चरण' बना सकते हैं: 'अंतिम चरण चरण = नया चरण(); stage.setScene (yourScene); stage.show(); ' – Vertex
हां, मेरा इरादा एक और खिड़की (किसी अन्य वर्ग में आवेदन) खोलना है, लेकिन मुझे इसे java.util.observer से अद्यतन विधि के अंदर यूआई थ्रेड नहीं करना है। –
आप 'runLater' विधि को कॉल करके यूआई थ्रेड में कोड का एक गुच्छा चला सकते हैं:' Platform.runLater (नया रननेबल() {@ ओवरराइड सार्वजनिक शून्य रन() {// यूआई थ्रेड में // रन}}; ' तो आप इसे 'अपडेट' विधि के अंदर कॉल कर सकते हैं। – Vertex