JavaFX Custom Layout

Times

Bekanntes Mitglied
Hallo,

ich bin noch ganz neu in der FX-Welt und habe nun langsam begonnen die FX-Komponenten meinen Erwartungen anzupassen (Habe alle Komponenten überschrieben um so u.a. Standardfonts zu setzen, Konstruktoren hinzugefuegt um bei Buttons direkt ein ActionEvent mit zu übergeben, Multi-Language Support etc.).
All dies gibt es auch so bereits in Swing aber wollte dann doch demnächst auf FX umsteigen, doch es stellt sich ein kleines Problem in meinen Weg.

In Swing habe ich durch eine Implementierung von "LayoutManager2" mein eigenes Layout erstellt, und damit meine Anwendungen mit FX auch wieder funktionieren, müsste ich diesen nach FX umsetzen.

Habe mir div. bestehende Layouts angeschaut und gesehen das diese alle von Pane erben. So find ich dann auch mal an aber von dort an komme ich nicht wirklich weiter.
Habe angefangen eine eigene add Methode hinzuzufügen, mit welcher die Komponenten (Control/Node -> habe beides probiert.. !) zum Pane hinzugefügt werden aber von dort an habe ich zum einen das Problem das ich nicht an die Grösse des Panes komme, also nicht zu dieser Zeit und zum anderen finde ich keine Möglichkeit an die Standard-Höhen der einzelnen Elemente zu gelangen.
In Swing habe ich dafür getPreferredSize für Container-Komponenten und getFontSize + Offset für Text/Button/Label Komponenten genutzt, aber diese Attribute stehen zu jener Zeit entweder auf 0/-1 oder es gibt diese nicht.

Gehe ich das ganze falsch an? Welche Methode muss ich überschreiben damit ich die Positionierung der Komponenten übernehmen kann?

Danke
 

Joose

Top Contributor
Swing und JavaFX sind 2 Unterschiedliche UI Frameworks daher ist es nicht so einfach das von einem zum anderen zu übertragen ;)
Hier mal eine Liste mit Unterschieden: http://www.dummies.com/how-to/content/10-differences-between-javafx-and-swing.html
(vor allem der Punkt mit den Layouts)

Hier ein Link der etwas auf die Größen und Ausrichtung der Nodes eingeht
http://docs.oracle.com/javafx/2/layout/size_align.htm

In Swing habe ich durch eine Implementierung von "LayoutManager2" mein eigenes Layout erstellt, und damit meine Anwendungen mit FX auch wieder funktionieren, müsste ich diesen nach FX umsetzen.

Was konnte dein "LayoutManager2" magisches was du in JavaFX realisieren willst?
Möglicherweise kann man dir eine Alternative zeigen.
 

Times

Bekanntes Mitglied
Hey,

also ich wollte wieder mein eigenes Layout verwenden, da ich damit viel besser zurecht komme als mit gewöhnlichen Layouts. Vorteile daran sind, das ich es nach meinen Wünschen erweitern kann und mir somit alles offen ist.

Hier einige Punkte die dies mit sich bringt:
  • Ein Layout für 95+% (für meine Ansprüche) Fälle.
  • Layout "Komponenten" Platzierungen werden nach Reihenfolge im Code positioniert.
    Hier sagen einige bestimmt das das total ineffizient ist, doch es gibt immer wieder Fälle in denen Kunden auf einen zu kommen und mal eben ganze Teile im Programm verschoben haben möchten. Gesagt getan, fix ein paar Zeilen Code umkopieren und fertig. Keine Anpassungen von irgendwelchen Werten.. es bleibt wie es ist, nur das die Reihenfolge verändert wird.
  • Schlicht und einfach:
    Wieder ein Vorteil und ein Nachteil zugleich. Es sieht nicht super toll aus und es funkelt nicht an allen Ecken und Enden, aber es ist praktisch. Da ich sehr viel mit Datenbanken zu tun haben und somit zB. Stammdaten-Pflege "Formulare" habe welche sich andauernd nach Kundenwünschen ändern ist dies einfacher für mich handzuhaben.
Also klar es gibt immer Vor-/ und Nachteile bei allen möglichen Layouts.. aber der Hauptgrund das ich dieses verwende ist das ich nicht n Layouts miteinander vermischen will, da dies bei Änderungen dann doch schon etwas mehr Aufwand mit sich bringt.

Erledigt:

Habe dann doch den richtigen Weg gefunden. Ich war schon nah dran mit dem Pane.
Also es wird von Pane geerbt und dann die layoutChildren() Methode überschrieben.
Von hier aus kann ich dann auch die Pane Grösse mittels getWidth() / getHeight() sowie die Control-Hoehe (Standardgröße) abrufen mittels control.getHeight();


Falls noch weitere Anregungen für mich vorhanden sind oder noch Fragen bestehen... legt los :)

Liebe Grüße
Times
 

dzim

Top Contributor
Meine Anregung wäre, sich etwas mehr mit JavaFX zu beschäftigen... Sicher kannst du alles "wie bisher aus Swing gewohnt" weitermachen. Die folgende Frage musst du dir dann aber stellen lassen: Warum dann überhaupt von Swing weggehen?

Unter JavaFX kann man (und mit "kann" meine ich "sollte") strikter nach MVC arbeiten. Trennung von der UI (in Form von FXML-Dateien) und dem dazugehörigen Controller.
Es gibt bereits eine Reihe von Frameworks (afterburner.fx, mvvmFXm, ...) die einem dort auch noch unterstützend unter die Arme greifen. (Auch interessant klingt DataFX für die Verbindung zu Daten - das spielt gleich mehrere Rollen.)

Vor kurzen bin ich auch noch auf den Geschmack von Spring Boot mit JavaFX gekommen - grundsätzlich aber das tolle daran ist eigentlich die Dependency-Injection. Und das ganze noch schön Kombiniert mit JavaFX-Databinding und den vielen netten funktionalen Spielereien aus Java8.

Ich würde dir also empfehlen nicht einfach nur wie bisher weiter zu machen, sondern mal zu schauen, was mat mit JavaFX besser/anders/... machen kann (z.B. darf man hier gern Built-In-Layouts ineinander verschachteln, Jooses Link war hier sehr sinnvoll!).
 

Times

Bekanntes Mitglied
Hey dzim,

da hast vollkommen Recht. Natürlich wäre es unsinnig umzusteigen wenn man alles so macht wie gehabt! In ferner Zukunft habe ich auch vor noch einiges umzustellen, aber da eine Umstellung mal nicht eben so getan ist hatte ich vor das ganze so umzusetzen das ich mit und mit immer mehr in die FX-Welt eintauche.

Ich werde mich also aufjedenfall noch genauer damit beschäftigen und bedanke mich bei euch beiden für die vielen Tipps :)

Liebe Grüßé
Times
 

dzim

Top Contributor
Viel Erfolg dann und versuche dich lieber früher als später ;-)

Wenn du spezifische Fragen hast, immer her damit. Wenn ich sie verstehe und dazu etwas sagen kann, werde ich sie normalerweise versuchen, schnell zu beantworten.

Joose und ein paar andere sind sowieso schnell :-D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
F JavaFX Custom Exceptions AWT, Swing, JavaFX & SWT 5
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Gluon Scene Builder Custom AWT, Swing, JavaFX & SWT 0
B JavaFX Custom TextInputControl AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
F JavaFX Custom ListView erstellt ghost Element AWT, Swing, JavaFX & SWT 3
X Custom Controls AWT, Swing, JavaFX & SWT 5
L JavaFX Custom control mit Hover Effekt AWT, Swing, JavaFX & SWT 2
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
G TitledPane Custom Title AWT, Swing, JavaFX & SWT 6
N Custom JButton Feld aus Parent lesen lassen AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
B Swing JTable custom ColumnModel Problem AWT, Swing, JavaFX & SWT 5
W Swing Tag Oder Custom Eintrag AWT, Swing, JavaFX & SWT 7
algorismi Custom JDesktopIcon AWT, Swing, JavaFX & SWT 5
hdi Custom Cursor: Problem mit Größe AWT, Swing, JavaFX & SWT 5
N JComboBox mit Custom Object AWT, Swing, JavaFX & SWT 2
V Frage zu JScrollPane mit Custom Headern, mit Beispiel AWT, Swing, JavaFX & SWT 2
S [S] custom tree componente AWT, Swing, JavaFX & SWT 8
Z MessageDialog mit Custom panel erstellen AWT, Swing, JavaFX & SWT 2
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben