Multiple Scenen

alexschaaf

Mitglied
Hallo zusammen,

ich habe eine Frage. Also ich arbeite grade an einem Spiel. Die GUI des Spiels ist mit JavaFX in NetBeans realisiert. Das wichtigtigste im Spiel ist schon fertig. Nun will ich eine Login Scene noch dazu machen wo man sich vorher einloggen kann bevor man das Spiel spielen kann. Nun mein Problem: Also ich habe gegoogelt und habe auch paar Lösungsvorschläge gefunden nun geht keins von denen. Das Problem ist alle lösungsvorschläge gehe so vor das einer bestimmten Variable dynamisch immer eine andere Scene zugewiesen wird, soweit so gut. Dann (so in den Beispielen) wir diese bestimmte Variable an die Scene der Stage gebindet und dann sollte es Funktionieren aber ich bekomme immer diese Fehler vom Compiler : non-static variable currentScene cannot be referenced from a static context denn fehler verstehe ich zwar ich weis aber nicht wie ich mein Ziel mit Multiple Scene realisieren soll. Ist der Ansatz generel falsch? Hier noch mal der Code wie ich versuche eine Multiple Scene Application mit JavaFX in Netbeans zu machen.

Java:
var varifikation:Boolean;
var game:View = View{};
var login:Main = Main{};
var currentScene: Scene = login.getDesignScene();


def scene1: Scene = Scene {
    content: Text {
        font : Font {
            size : 24
        }
        x: 10, y: 30
        content: "Scene 1"
        onMouseClicked: function( e ):Void {
         currentScene = login.getDesignScene();
       }
    }
}

def scene2: Scene = Scene {
    content: Text {
        font : Font {
            size : 24
        }
        x: 10, y: 30
        content: "Scene 2"
        onMouseClicked: function( e ):Void {
         currentScene = game.getDesignScene();
       }
    }

}}

function run (): Void {
    javafx.stage.Stage {
    title: "Multi-Scene"
    width: 250
    height: 80
    scene: bind currentScene // und hier streikt der Compiler "non-static variable currentScene         //cannot be referenced from a static context"
    }
}

Für Hilfe wäre ich sehr dankbar!
 

alexschaaf

Mitglied
Ja so habe ich das aus dem netz übernohmen. Habe auch einen anderen Ansatz gefunden( Managing multiple scenes in JavaFx mxshrestha) der mir sogar noch besser gefällt als der. Aber auch dieser Ansatz scheitert daran weil der Compiler mir diese static Meldung bringt! Ich probier mal das ganze in Eclipse zu Importieren und dann mal Schauen was dabei rauskommt.Ich glaube das man in Eclipse JavaFX sachen ohne diese run() Methode starten kann.
Grüße
Alex
 
Zuletzt bearbeitet:

alexschaaf

Mitglied
Also ohne die run() Methode geht's nicht bekomme dann auch fehler wenn ich es starte. Und zwar diesen (Im NB und Eclipse)
java.lang.NoSuchMethodException: egummain.Start.javafx$run$(com.sun.javafx.runtime.sequence.Sequence)
at java.lang.Class.getMethod(Class.java:1622)
at com.sun.javafx.runtime.Entry.start(Entry.java:63)
at com.sun.javafx.runtime.Main.main(Main.java:80)
at com.sun.javafx.runtime.main.Main.main(Main.java:35)

ich folgere daraus das es ohne die run() Methode nicht geht. Und wenn mann es mit der run() macht muss die komplette Stage sogar die Scene und deren Content static (def) sein. Oder liege ich da falsch mit dieser Folgerung?
 

Runtime

Top Contributor
Nein, du kannst auch eine Klasse definieren und diese instanzieren. Allerdings sollte JavaFX Script auch ohne run() funktionieren, das ist wohl ein Bug im NB Module, hast du es schon mit Eclipse versucht?
 

alexschaaf

Mitglied
Jep habe ich. Aber ich habe auch einfach das ganze NB Project Importiert. vielleicht hat sich ja der Bug irgend wie mitgeschlept. Ich dreh noch durch. Ich weis als ich meine ersten geh versuche mit JavaFX gemacht habe ging das auch ohne diese run() Methode.Wie findest du eigentlich den zweiten ansatz mit Controller und so also den von mxshrestha?
Falls es ein Bug ist weist du wie ich den beseitige oder rausfinde ob es überhaupt ein bug ist?
 
Zuletzt bearbeitet:

alexschaaf

Mitglied
Ok habe das mit Multiplen Scenen immer noch nicht gelöst. Habe mich dafür entschieden einen anderen weg zu gehen. Falls jemand eine funktionierende Lösung parat hat bitte melden. Nur interesse halber. Danke
 

Neue Themen


Oben