Komplexe Eingabenmasken in FXML definieren?

Maxi62

Aktives Mitglied
Hi,
ich freunde mich gerade mit dem SceneBuilder und JavaFX an?
Ich muss eine komplexe Eingabemaske mit vielen Textfeldern definieren, welches Layout ist da empfehlenswert und wie kann man einzelne Gruppen von Feldern umrahmen?

Als Grundlage habe ich Borderpane, und im Center Bereich wollte ich nun die Eingabegruppen definieren. Gibts da schon Beispiele oder Vorlagen wie man sowas schick gestalten kann? Welches Element/Container nehmt ihr um den Rahmen um eine Gruppe zu zeichnen?
 

dzim

Top Contributor
Styling wird in JavaFX i.d.R. über CSS erledigt:
JavaFX CSS Reference Guide (ist zwar noch JavaFX 2.2 aus Java7, aber im Grossen und Ganzen auch für JavaFX 8 aus Java8 gültig; für weitere CSS entpacke dir die caspian.css (Java7 und 8) und modena.css (Java8) aus der jfxrt.jar aus deinem JDK)

Wie du es genau umsetzen kannst, ist davon abhängig, wie du deine Oberfläche gestalten möchtest. BorderPane als Root ist sicher vernünftig, als Center könntest du ein GridPane verwenden (erste Spalte Textfelder und zweite Spalte die jeweils dazugehörigen Inputfelder). Am Ende wird es sicher eine tiefere Verschachtelung sein, aber pauschal kann man dir deine Frage so nicht beantworten. Poste vielleicht mal ein Mockup, dann kann man dir sicher weiterhelfen.
 

Maxi62

Aktives Mitglied
Na ja ich hätte gern mal ein paar gelungene Beispiele eines komplexeren Eingabedialoges in JavaFX angeschaut um mir ANregungen zu holen. Aber anscheinend findet man sowas im Netz noch nicht. Liegt vielleicht daran das es immer noch recht aufwendig ist bei jedem Feld Eingaben auf Länge und Inhalt zu verifizieren, in anderen Sprachen gibt es dafür Properties und gut ist!

Kann man um ein GridPane per CSS einen leichten Border zeichen, wie würde sowas gehen?
 

dzim

Top Contributor
Ok vielleicht erklärst du mal, was du eigentlich willst: "Komplexe Eingabemasken" tönt nach vielen Label- und Text-Elementen. Dafür braucht man eigentlich keine Beispiele, weil man die schon auf seinen Use-Case zugeschnitten selbst erstellen muss.

Was du in deiner Antwort nur so am Rande erwähnst, scheint eine Validierung der Eingabewerte der Text-Felder zu sein. Das ist ein komplett anderes Thema, bzw. von dir so in deiner Frage nicht (oder eben viel zu umständlich) formuliert wurde.

Es gibt hier IMHO *noch* kein offizielles Framework. JavaFX ist da noch kräftig im Aufbau. Im nächsten Update sollten offiziell Dialoge enthalten sein und ich glaube auch mal was über Input Field Validation oder so gelesen zu haben...

Eine Quelle von Update im JavaFX-Umfeld ist die Seite fxexperience. Der Blogger ist einer der Entwickler von Oracle, der an JavaFX arbeitet (ich glaube sein Kind sind die Table- und TreeViews).
Dort habe ich zu den Dialogen das hier und zu der Validierung von Input zum einen einen Hinweis in einem der Blog-Posts, aber auch, dass das von ihm und ein paar anderen als Open Source bereitgestellte ControlsFX-Projekt seit der Version 8.0.6 die Möglichkeit der Validierung von Eingabewerten unterstützt.

Aber wie gesagt: Deine ursprüngliche Frage hat das IMHO nicht deutlich gemacht, sollte es das gewesen sein, was du gesucht hast...
 

Maxi62

Aktives Mitglied
Hi, danke für die Tipps! Nun bei der Validation bin ich noch nicht, das kommt etwas später. Es ging mit jetzt erst mal um die professionelle Gestaltung von umfangreichen Business-Dialogen. Ja schon vorwiegend Label und Textfelder aber auch Auswahlfelder usw. Einfach wie man beispielsweise Gruppen von Textfeldern z.B. Adresse, Bankverbindung etc. vom Design her am besten kenntlich machen kann, z.B. mit Rahmen. Einfach ein paar gestalterisch gelungene Dialoge als Vorlage wären schön.
 

Maxi62

Aktives Mitglied
Na ja, das Design soll ja mit dem SceneBuilder angelegt werden, da ist man schon von den Möglichkeiten und der Erscheinungsform der vorhandenen Controls abhängig. Sicherlich lassen sich auch noch eigene definieren, aber davon wollte ich weitgehend absehen da das Projekt auch mal fertig werden soll!
 
Zuletzt bearbeitet:

dzim

Top Contributor
Viele - ähm... oder besser: alle - Controls, lassen sich mit mässigem Aufwand mittels CSS umgestalten.
Einen allgemeingültigen Plan für dein konkretes Problem kann dir niemand geben. Es gibt Firmen, die sich auf Design und/oder Usability von Oberflächen (oder auf Reviews von solchen) spezialisieren. Allerdings müssen schickes Design und gute Usability nicht etwas miteinander zu tun haben (schon selbst nach solchen Reviews erlebt :) Der eine sagt "super!", der andere "naja..." (ein "s******e" hört man selten, die wollen ja keine Auftraggeber verlieren)).

Etwas anderes als einen Prototypen zu machen (z.B. mit dem SceneBuilder, der sich dafür ja geradezu anbietet), wäre der richtige Anfang. Wenn du dann das FXML postest, können wir uns mal anschauen, wie wir es finden und evtl. Verbesserungen vorschlagen/vornehmen.

Ich finde übrigens, das in puncto Design von Elementen/Widgets auf der Oberfläche JavaFX deutlich besser aufgestellt ist, als HTML.
Gewagte Theorie, ich weiss, aber was ich meine ist: Es gibt vernünftige Layouts!
Responsives Design mit JavaFX (oder auch Swing, oder SWT) ist deutlich einfacher (auch wenn man sich schon immer noch Gedanken darüber machen muss :) ), als im Web. Finde ich. Ich muss aber auch anmerken, dass ich meine bisherigen Erfahrungen mit mobilen Web-Apps (Phonegap) nur an zwei Projekten ausprobieren konnte und vorher nie viel mit Webdesign am Hut hatte...
 
Zuletzt bearbeitet:

Maxi62

Aktives Mitglied
Ok, dann frage ich doch mal konkret da ich kein großer CSS Experte bin.
Mit welcher Anweisung bekomme ich um drei Textfelder mit Labels einen hellen grauen Rahmen drum?
Wir gehen mal davon aus das die 3 Textfelder/Labels in einem Gridpane liegen.
 

dzim

Top Contributor
Indem du hier mal nachliest.
Ich hatte vor JavaFX auch keinen Schimmer von CSS. Und auch jetzt stolper ich viel in Web-Kram über "Besonderheiten". Zum Glück ist das CSS von JavaFX relativ straight-forward, auch wenn die alles mit speziellen (sprich: bescheuerten) "-fx-*" Präfixen versehen mussten.
Was du brauchst ist also "-fx-border-*" ("-fx-stroke-*" geht auch, aber border ist einfacher).

Dein CSS könnte so was hier enthalten:
Code:
.my-textfield {
-fx-border-color: lightgrey;
-fx-border-radius: 0;
-fx-border-width: 2px;
-fx-border-style: solid;
}

Wenn du nun diese Style-Klasse ("my-textfield") an die Text-Felder anhängst, erhälst du Textfelder mit Rahmen in der Farbe "lightgrey", eckigen Ecken ( :) ), der Rahmen ist 2 Pixel dick und ein durchgängiger Strich.
Eigentlich ziemlich simpel.
 

Maxi62

Aktives Mitglied
Ist doch einfacher als gedacht, danke für Tipp!
Übrigens: Habe jedoch gemerkt das der SceneBuilder schnell mal abstürzt wenn man bei CSS-Style in den Properties was falsches einstellt. Hatte erst mit fx-Border-Region (oder so ähnlich; kann man auswählen) versucht was einzustellen, da hat er sich jedesmal aufgehängt. Andere CSS-Styles gingen.
 

dzim

Top Contributor
Mag sein, aber ich verwende Eclipse mit dem dazugehörigen Plugin efxclipse. Das hat zum einen eine eigene JSON-ähnliche DSL für FXML (ich finde FXML selbst eher schlecht zu nutzen) und einen Live-Preview für die DSLs oder FXMLs (mit der Option gleich noch den Controller zu laden und so mitunter schon Teile deines Programm in dem Preview-View in Eclipse zu testen). Und ich bin mittlerweile schon so schnell mit der DSL, dass ich es kaum so schnell im SceneBuilder zusammenklicken und testen (sieh Controller) könnte...
Aber wie gesagt: Das ist nur mein persönlicher Geschmack.
 

Maxi62

Aktives Mitglied
Also wie man per CSS einen Border um ein Element zeichnet hab ich nun verstanden.
Kann man per CSS aber auch erreichen das man einen Rahmen mit einem Titel um ein Element erzeugt? Also wie in HTML bei so einem <fieldset>. Da hab ich noch nichts passendes gefunden.
 

dzim

Top Contributor
Nein ich denke, das wird nicht direkt gehen, aber dafür bin ich nicht CSS-Profi genug. Wahrscheinlich musst du dir ein solches Ding selbst bauen (z.B. eine VBox mit Rahmen, erstes Element ein Label, dass du dann mit translatey=-10 oder so nach oben über den Rahmen schiebst - du musst dem Label dann aber einen einfarbigen Hintergrund geben, sonst sieht man den Rahmen immer noch hinter dem Label langgehen).
 

Maxi62

Aktives Mitglied
Merkwürdig das die FX Entwickler nicht an so eine Group oder Pane mit Titel gedacht haben. Man kann zwar TitledPane nehme, aber da ist der Titel recht groß, vielleicht kann man TitledPane mit CSS etwas zurechtbiegen.
 
Zuletzt bearbeitet:

dzim

Top Contributor
JavaFXist noch immer recht neu. Man hat sich ja gerade mal dazu durchgerungen im kommenden Java8u40 eine vernünftige Dialog-API aufzunehmen. Da es im Gegensatz zu Swing nicht "tot" ist, sondern von Oracle munter weiterentwickelt wird, würde es mich nicht wundern, wenn da bald mal was kommt. Aber davon abgesehen: Vielleicht gibt es ja schon wa von ControlsFX oder JFXtras... Hast du da mal geschaut?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
TheJavaKid JTextPane: komplexe Formatierung (links) AWT, Swing, JavaFX & SWT 2
B Swing Komplexe GUI AWT, Swing, JavaFX & SWT 6
G Komplexe HTML-Seiten mit Swing Browsen AWT, Swing, JavaFX & SWT 5
T Komplexe GUI Entwicklung AWT, Swing, JavaFX & SWT 6
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
N Braucht man fxml AWT, Swing, JavaFX & SWT 3
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
M mvvm umsetzen ohne fxml AWT, Swing, JavaFX & SWT 0
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
G JavaFX Verständnisfrage mit parametrisierten Methoden und FXML AWT, Swing, JavaFX & SWT 21
Ø Ein FXML-File mehrfach einfügen AWT, Swing, JavaFX & SWT 6
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
OSchriever Auf Stage von FXML-Controller zugreifen AWT, Swing, JavaFX & SWT 12
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
J FXML - Internationalisierung - Behandung key not found AWT, Swing, JavaFX & SWT 39
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
T Fxbefehle aus Main umwandeln in @FXML AWT, Swing, JavaFX & SWT 21
L JavaFX JavaFX, FXML und Guice? AWT, Swing, JavaFX & SWT 0
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
TheWhiteShadow JavaFX Dependencies in fxml AWT, Swing, JavaFX & SWT 17
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
I MediaPlayer (MediaView) in FXML (source) AWT, Swing, JavaFX & SWT 0
I FXML: StackPane als Root-Element AWT, Swing, JavaFX & SWT 5
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
MiMa Übergeben von Paramter bei FXML Aufruf? AWT, Swing, JavaFX & SWT 8
MiMa Wie bettet man Programmcode in JavaFX FXML ein? AWT, Swing, JavaFX & SWT 34
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
T Pfad zur *.fxml AWT, Swing, JavaFX & SWT 8
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX FXML vs. Java Code AWT, Swing, JavaFX & SWT 3
L Liniendiagramme mit FXML: Quellen mit konkreten Beispielen AWT, Swing, JavaFX & SWT 0
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
K JavaFX JavaFX und FXML AWT, Swing, JavaFX & SWT 6
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
U JavaFX Zeichenprogramm mit JavaFX FXML AWT, Swing, JavaFX & SWT 7
B Java FX FXML Textarea SceneBuilder als XML Editor AWT, Swing, JavaFX & SWT 1
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
M Java FX SceneBuilder 2.0, FXML, Controller AWT, Swing, JavaFX & SWT 1
B FXML-Layoutdateien schützen AWT, Swing, JavaFX & SWT 4
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S JavaFX FXML-Editor mit Java 7? AWT, Swing, JavaFX & SWT 2
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
M JavaFX FXML Standartgröße festlegen AWT, Swing, JavaFX & SWT 5
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
D JavaFX @FXML Annotation mit Klassen und Instanzen verbinden? AWT, Swing, JavaFX & SWT 5
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
K JavaFX Erzeugen dynamischer Layouts in fxml AWT, Swing, JavaFX & SWT 3
M JavaFX Stage in einer FXML-Controllerklasse ermitteln? AWT, Swing, JavaFX & SWT 5
G Swing, JavaFx - Felder aus FXML sind null AWT, Swing, JavaFX & SWT 6
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
C JavaFX Fxml and stylecheets AWT, Swing, JavaFX & SWT 5
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
Tort-E JavaFX FXML Grundsatzfrage AWT, Swing, JavaFX & SWT 2
K Controls in Controls / Nested fxml AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
S JavaFX FXML AWT, Swing, JavaFX & SWT 3
G JavaFX Fxml AWT, Swing, JavaFX & SWT 2
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
F JavaFX Auf FXML ImageView zugreifen AWT, Swing, JavaFX & SWT 6
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
B JavaFX FXML - Eclipse einrichten AWT, Swing, JavaFX & SWT 2
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben