JavaFX Variablen in einem FXML File verwenden

siascha

Mitglied
Hallo,

erster Post und FX-Anfängerin.

Ich versuche gerade ein Spiel zu programmieren, bei dem man sich verschiedene Spieler aussuchen kann. Jeder dieser Spieler kann verschiedene Items besitzen. (Im FXML ist jetzt nur das Beispiel Gold ausgeführt.) Für die Anzeige EINES Spielers habe ich ein FXML entworfen, das ich jetzt für ALLE Spieler verwenden möchte. Mein Problem ist folgendes: die Items der verschiedenen Spieler müssen ja jeweils eigene IDs besitzen, damit ich das jeweils richtige Item ansprechen kann. Kann man die fx ids irgendwie generisch erzeugen?

XML:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<SplitPane dividerPositions="0.75" maxHeight="-Infinity"
    maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
    prefHeight="400.0" prefWidth="600.0" 
    xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="controller.GameController">
    <items>
        <AnchorPane prefHeight="200.0" prefWidth="200.0">
            <children>
                <!--weiterer Code-->
            </children>
        </AnchorPane>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="100.0">              
                <children>
                    <Label prefHeight="17.0" prefWidth="75.0" text="Gold" />
                    <!--HIER SOLL DIE ID GENERISCH FÜR JEDEN SPIELER EINGESETZT WERDEN, z.B. player1NumberOfGold usw.-->
                    <TextField fx:id="numberOfGold" maxHeight="-Infinity"
                        maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
                        prefHeight="25.0" prefWidth="25.0" />
                </children>
        </AnchorPane>
    </items>
</SplitPane>
 

dzim

Top Contributor
Ich bin mir nicht zu 100% sicher, ob ich es verstehe, aber ich denke, du müsstest deine Daten (und das UI) pro Spieler dynamisch im Controller des FXML händeln. Du kannst dort natürlich einfach wieder den UI-Part über FXML lösen, aber welcher (UI-)Block zu welchem Spieler gehört (und auch wie viele es davon geben soll), musst du in deiner Programmlogik verwalten.
 

siascha

Mitglied
Na ich habe zuerst ein Formular, in dem ich 2-4 Spieler aussuchen kann. Diese ausgesuchten Spieler packe ich in eine Liste, über die ich itterieren möchte, quasi: für jeden Spieler in der Liste erstelle ein Spielerfeld mittels dem fxml im Haupt fxml (hier habe ich eine HBox, wo die Spieler UI rein sollen). Und genau hier liegt mein Problem... Wie mach ich das bloss? Ich such mich im Netz schon wund, habe bisher aber noch nix hilfreiches gefunden :-(
 

dzim

Top Contributor
Im Prinzip brauchst du so etwas wie das hier:
Root-FXML (in dem Beispiel wirklich der Root der Application):
https://github.com/bgmf/poc/blob/master/simple-tests-fx/src/main/resources/fxml/Root.fxml
Das wird via FXMLLoader in der Start-Methode der JavaFX-Application geladen:
https://github.com/bgmf/poc/blob/master/simple-tests-fx/src/main/java/eu/dzim/tests/fx/MainRoot.java
Und der Inhalt wird dynamisch aus anderen FXMLs nachgeladen:
https://github.com/bgmf/poc/blob/ma.../dzim/tests/fx/controller/RootController.java

Der Unterschied zu dir ist, dass du halt im "RootController" (letztes Beispiel) halt nicht komplette Inhalte ersetzt, sonder anhand deiner Iteration über deine Liste X Oberflächen in deine HBox einfügst.
 

siascha

Mitglied
Das hieße aber, dass ich für jeden Spieler einen eigenen Controller anlegen muss, richtig?
Geht denn da dann die Interaktion noch? Also wenn ich zum Beispiel ein Goldstück vom Spielplan (was im grunde mein Root fxml ist) auf einen der Spieler dragge, dass das Goldstück bei dem Spieler ankommt?
 

dzim

Top Contributor
Naja, du schreibst natürlich nur einmal einen Controller... ;) Aber für Drad & Drop muss halt der Root eine DragSource und die Spieler-UI ein DragTarget sein. Es sollte also problemlos klappen. Ich gebe zu, dass ich bisher meist um Drag & Drop herumgekommen bin. Aber auch wenn die Beispiele für DnD meist dies nur innerhalb einer UI zeigen, geht das natürlich auch über die Grenzen von FXMLs und deren Controllern hinaus.
 

siascha

Mitglied
Also einen Controller für alle Spieler (logisch, jeder Spieler muss ja das selbe machen können), das selbe fxml (auch klar, weil der Aufbau der UI für jeden Spieler gleich ist) und dann habe ich aber immer noch mein Hauptproblem: Wie unterscheide ich die einzelnen Spieler? Sorry, ich hab grad anscheinend nen Hänger...
 

dzim

Top Contributor
Deine Spieler-spezifische UI müsste einen Setter für den Spieler besitzen. Es gibt da bereits so einige Beiträge hier im Forum, wenn du z.B. nach "ControllerFactory" suchst.

Beispiel von @Robat - https://www.java-forum.org/thema/listview-zeigt-eintraege-nicht-an.185003/#post-1185779

In meinem Git-Repository gibt es auch ein paar Beispiele:
https://github.com/bgmf/poc/blob/ma.../dzim/tests/fx/MainWithControllerFactory.java
https://github.com/bgmf/poc/blob/ma...dzim/tests/fx/MainWithControllerFactory2.java
...

Der Clou ist, dass du damit Daten in einen Controller injizieren kannst, bevor das UI initialisiert wird (#initialize-Methode). Dein Controller kann dann das Spieler-UI entsprechend einrichten, so dass Spielerrelevante Daten angezeigt werden. Möglicherweise auch mit der Aktualisierung eines zentralen Models, wenn du dieses auch injizierst.
Schau dir dir ganzen Beispiele mal an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
F Variablen an eine Form binden? AWT, Swing, JavaFX & SWT 2
L Auf Variablen zugreifen AWT, Swing, JavaFX & SWT 6
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
F MouseMotionListerener & Verfügbarkeit von Variablen AWT, Swing, JavaFX & SWT 5
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
H SWT NullPointerException bei Zugriff auf Variablen des Hauptfensters AWT, Swing, JavaFX & SWT 6
B Variable ist leer / Scope von Variablen AWT, Swing, JavaFX & SWT 2
P non-static variablen benutzen AWT, Swing, JavaFX & SWT 7
N Variablen in Events AWT, Swing, JavaFX & SWT 4
M Zugriff auf Variablen eines Objektes ohne sie auf static zu setzen AWT, Swing, JavaFX & SWT 9
C SWT Textfeld mit festem und variablen Inhalt AWT, Swing, JavaFX & SWT 13
O Variablen an anonyme Funktion AWT, Swing, JavaFX & SWT 10
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
hdi Fenster mit variablen Components AWT, Swing, JavaFX & SWT 3
isowiz Wie kann ich Variablen aus einer Innerklasse heraus ändern? AWT, Swing, JavaFX & SWT 5
B Variablen-Namen erfragen AWT, Swing, JavaFX & SWT 5
A problem mit variablen und dialod AWT, Swing, JavaFX & SWT 2
N JLabel o.ä. mit Variablen verknüpfen AWT, Swing, JavaFX & SWT 10
S Wie Variablen Übergabe an Dialog?? AWT, Swing, JavaFX & SWT 2
M variablen uebergabe ?? AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
F JavaFX JavaFX - Hintergrundmusik in einem seperatem Task/Service AWT, Swing, JavaFX & SWT 6
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Dreieck in einem Kreis??? AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben