NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: javaFX vyvolanie ďalšieho okna zo SceneBuilderu

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jozef Šustek
Tvůrce
Avatar
Jozef Šustek:16.6.2017 12:26

Ahojte, robím aplikáciu Pripomínač narodenín podľa seriálu javaFX ktorý tu je. V seriáli je okno urobené v SceneBuilder. V okne tlačítkom otvorím ďalšie okno, ale to je v seriáli napísané ručne. Ja som to Ďalšie okno chcel urobiť tiež v SceneBuilder a potom ho príslušným tlačítkom otvoriť. Neprišiel som ale na to ako to druhé okno otvoriť. Tu som sa zasekol, dlho som googlil ale neprišiel som na nič. Celu appku prikladam https://www.dropbox.com/…FEKsMPzB4lYa
Ďakujem predom za pomoc :)

 
Odpovědět
16.6.2017 12:26
Avatar
Jozef Šustek
Tvůrce
Avatar
Jozef Šustek:16.6.2017 14:42

Ten link je zlý toto by malo isť https://ufile.io/vh5rp

 
Nahoru Odpovědět
16.6.2017 14:42
Avatar
Milan Suchomel:16.6.2017 16:20

Už to je dlouho co jsem viděl FXko naposled, ale tu máš kód z mé semestrálky. Snad ti to pomůže :)

try {
    LoginController.mainController = this;
    System.out.println("onClick() - MenuPrihlasit");
    Parent root = FXMLLoader.load(getClass().getResource("Login.fxml"));
    Stage dialog = new Stage();
    dialog.initStyle(StageStyle.UTILITY);
    Scene scene = new Scene(root);
    dialog.setScene(scene);
    dialog.resizableProperty().set(false);
    dialog.setTitle("Přihlásit");
    dialog.setAlwaysOnTop(true);
    dialog.show();
} catch (IOException ex) {
    Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
}
 
Nahoru Odpovědět
16.6.2017 16:20
Avatar
Jozef Šustek
Tvůrce
Avatar
Jozef Šustek:16.6.2017 19:19

To prave že som našiel na nete a viem ako by to malo fungovat, ale nejde mi to. Myslím že problém je že neviem kde ten kód umiestniť. Ja to vkladám priamo do tela tlačítka ktoré mám v main Controller.

@FXML
        public void handlePridatButtonAction(ActionEvent event) throws Exception
        {
                Parent newRoot = FXMLLoader.load(getClass().getResource("FXMLosoba.fxml"));
                Stage newStage = new Stage();
                Scene newScene = new Scene(newRoot);
                newStage.setScene(newScene);
                newStage.show();
        }

Keď potom v programe na dané tlačítko kliknem hodí mi Error

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
        at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.Node.fireEvent(Node.java:8413)
        at javafx.scene.control.Button.fire(Button.java:185)
        at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
        at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
        at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
        at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
        at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
        at com.sun.glass.ui.View.notifyMouse(View.java:937)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.Trampoline.invoke(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
        at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
        ... 48 more
Caused by: java.lang.NullPointerException: Location is required.
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
        at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
        at application.ControlerPripominac.handlePridatButtonAction(ControlerPripominac.java:41)
        ... 58 more
Editováno 16.6.2017 19:20
 
Nahoru Odpovědět
16.6.2017 19:19
Avatar
Odpovídá na Jozef Šustek
Petr Štechmüller:16.6.2017 19:43
Caused by: java.lang.NullPointerException: Location is required

Tato vyjímka říká, že máš špatnou cestu k FXML dokumentu.
Ujisti se, že ten FXML soubor je ve správném adresáří. Podle kódu by měl být hned vedle třídy.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
16.6.2017 19:43
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Jozef Šustek
Tvůrce
Avatar
Odpovídá na Petr Štechmüller
Jozef Šustek:16.6.2017 20:14

Bola tam chyba v nazve FXML dokumentu, preklep :) Dobre ponaučenie do buducna. Dva dni som hladal chybu niekde kde vôbec nebola :D Ďakujem :)

 
Nahoru Odpovědět
16.6.2017 20:14
Avatar
Odpovídá na Jozef Šustek
Petr Štechmüller:16.6.2017 20:15

Není zač. Stačí si přečíst chybu z vyjímky a většínou lze vydedukovat, co je za problém.

Nahoru Odpovědět
16.6.2017 20:15
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.