AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GUI mit Java - Tipps?

Ein Thema von Rabenrecht · begonnen am 18. Jan 2017 · letzter Beitrag vom 24. Jan 2017
Antwort Antwort
Seite 1 von 3  1 23      
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

GUI mit Java - Tipps?

  Alt 18. Jan 2017, 11:24
Einleitung/Rant:
Vor ca. 2 Wochen habe ich ein privates Projekt angefangen (weil ich bei der Arbeit ja nicht schon genug programmiere... ). Da war ich auch richtig heiß drauf: endlich wieder alles selber entscheiden können, endlich wieder über alles den Überblick haben. Und vor allem: an etwas arbeiten, was ich selbst benutzen möchte.

Zudem habe ich mich auch darauf gefreut, wieder mit Intellij arbeiten zu können. Da gibt es doch viele Dinge, die für mich das Programmieren sehr viel leichter gestalten als zb. mit Delphi

Aaaaaber... dann bin ich gegen eine Wand gelaufen.
Meine übliche Vorgehensweise ist wie folgt: erst GUI erstellen, dann Presenter-Ebene fertig machen, dann eigentliche Programmlogik. Das ist schön Design-By-Intention, alle Use-Cases sind zwangsläufig schon definiert bevor die Programmlogik überhaupt angefasst wird. Zudem, so der Gedanke, liegen die nervigen Dingen (GUI, Presenterlogik) am Anfang des Projektes, wenn die Euphorie noch am größten ist.

Nun, ich hatte verdrängt, was für ein unglaublicher Mindfuck es ist, ne GUI mit Java zu erstellen. Das ist einfach zum Haare raufen.
Ich habe jetzt Stunden um Stunden damit verbracht, mich mit verschiedensten Layout Managern herumzuschlagen, und es funktioniert einfach nichts.
Der Grouplayout Mananger wirkt da noch am vernünftigsten. Trotzdem sind die Ergebnisse nicht so, wie ich mir das vorstelle. Ich habe auch mit dem Grouplayout nicht das Gefühl, wirklich Kontrolle über das Layout zu haben.
Nachdem zwei Komponenten, die eigentlich horizontal parallel, vertikal sequentiell angeordnet sein sollten, tatsächlich doch schön horizontal hintereinander gereiht dargestellt wurden, habe ich wieder aufgehört (weil WTF?).
In Delphi hätte ich wahrscheinlich die ganze GUI innerhalb von 30 Minuten zusammengeklickt. Stattdessen habe ich auch nach 10 Stunden oder mehr nicht mal eine einzige Eingabemaske fertig.
Ich bin sooo kurz davor das ganze Projekt zu kippen


Konkrete Fragen:
Aber vielleicht gibt es hier ja Leute, die etwas Erfahrung mit AWT/Swing Layout Manager, bzw. GUI-Design unter Java im Allgemeinen, haben

Dazu erstmal ein paar konkrete Fragen zum GroupLayout:

- wie kann man die horizontale Größe einer Komponente bestimmen? mit .add(Component, intMin, intPrefered, intMax) (also zb. .add(myEdit, 100, 100, 100)) hat das bei mir nicht geklappt.
- muss man einen neuen GroupLayout für jeden Container (Frames, Panels) erstellen?
- unter welchen Umständen führt der folgende Code NICHT zu der gewünschten vertikalen Anordnung:
Code:
groupLayout.setHorizontalGroup(groupLayout.createParallelGroup()
                                           .add(myLabel)
                                           .add(myEdit)
);
groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
                                           .add(myLabel)
                                           .add(myEdit)
);
Ohne Containerschachtelung klappt es:
Code:
window = new Frame();
groupLayout = new GroupLayout(window);
myLabel = new Label();
myEdit = new Edit();
//dann der Code von oben
Mit ewtas Schachtelung nicht mehr:
Code:
//Komponenten und Container erzeugen
window new Frame();
groupLayout = new GroupLayout(window);
page = new CardLayout();
panelSwitch = new Panel(page);
panelPage1 = new Panel();
groupPage1 = new GroupLayout(panelPage1);
myLabel = new Label();
myEdit = new Edit();

//Komponenten page1 zuordnen
groupPage1.setHorizontalGroup(groupPage1.createParallelGroup()
                                           .add(myLabel)
                                           .add(myEdit)
);
groupPage1.setVerticalGroup(groupPage1.createSequentialGroup()
                                           .add(myLabel)
                                           .add(myEdit)
);

//page1 in dem Switch-Panel hinzufügen
panelSwitch.addComponent(panelPage1);

//Switch-Panel dem Frame zuordnen
//im window sollen alle Container vertikal angeordnet sein
groupLayout.setHorizontalGroup(groupLayout.createParallelGroup()
                                           .add(panelSwitch)
);
groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
                                           .add(panelSwitch)
);

Was ich eigentlich erreichen will:
Leider ist meine GUI etwas komplexer als 4 (labled) Edits und zwei Buttons oder so.
Es handelt sich um eine Maske zur Eingabe von Daten. Das Haupfenster hat drei Teile, untereinander angeordnet:
1. Das Panel, das die eigentlichen Komponenten zur Eingabe enthält. Da es zu viele sind, um sie gleichzeitig anzuzeigen, möchte ich das mit mehreren "Seiten" über nen CardLayout machen.
2. Eine Textausgabe zum Anzeigen von Hinweisen oder anderen Nachrichten an den User.
3. Eine Buttonleiste zur Navigation (Abbrechen, Vorherige/Nächste Seite, Speichern)

Die Eingabemaske enthält mehrere Label+Edit Kombinationen, die vertikal angeordnet sein sollten.
Zudem:
- Titel-Label + mehrere Reihen von Checkboxen, wobei das Titel-Label linksbündig über den Checkboxreihen stehen sollte
- Titel-Label + Edit und Button; Edit und Button nebeneinander, Titel-Label linksbündig über dem Edit
- eine TextArea zum Preview der eingefügten Texte, plus undo und redo Buttons; die Buttons sollten vertikal zueinander stehen, beide rechts neben der TextArea

An Responsive Design denke ich gar nicht erst
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 13:16
"Sorry Kiddo, that's Java in a nutshell."

Du hast mein Beileid, andererseits hast Du Dir die Sprache ja selbst ausgesucht.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 14:17
"Sorry Kiddo, that's Java in a nutshell."

Du hast mein Beileid, andererseits hast Du Dir die Sprache ja selbst ausgesucht.

Sherlock
Werf Java, trotz Intellij, am besten über Bord und benutz die IDE und die Programmiersprache, die wirklich taugen: Delphi IDE und Delphi
Ich musste mich während der Ausbildung auch Jahre lang mit Java rumschlagen und weiß wovon du redest.

Du könntest ja im absoluten Notfall NetBeans benutzen aber die IDE generiert meiner Meinung nach hässlichen Code im Editor.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 14:30
Warum nicht Oberfläche in Delphi und die eigentliche Programmlogik in Java?
  Mit Zitat antworten Zitat
Rabenrecht

Registriert seit: 9. Dez 2016
79 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 14:53
Das geht? Wie würde man sowas den angehen?


@ a.def und Sherlock
Java an sich in ganz in Ordnung. Dass GUI-Design nicht die Stärke ist, war mir auch vorher klar. Aber muss doch irgendwie möglich sein, ne Oberfläche mit AWT oder Swing oder so zu erstellen.
Insgesamt würde ich für dieses Projekt schon ganz gern bei Java und IntelliJ bleiben, auch damit es sich nicht so anfühlt wie Arbeit
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 15:17
Bin mit Java nicht so vertraut, eher Delphi in Zusammenspiel mit C++ und C#, aber kann man da in Java auch COM-Interface-Objekte über DLL-Grenzen hinweg erstellen und weitergeben?
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 15:37
Ich habe vor vielen Jahren mal bissl mit Java programmiert und ich würde die empfehlen, irgendein Framework zum Erzeugen der GUI zu nutzen. Die GUI per Code zusammenzubasteln ist purer Brainfuck.

Ich weiss leider nicht mehr, was ich damals genutzt habe, aber vermutlich gibt es das inzwischen eh nicht mehr.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#8

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 15:52
Ich habe vor vielen Jahren mal bissl mit Java programmiert und ich würde die empfehlen, irgendein Framework zum Erzeugen der GUI zu nutzen. Die GUI per Code zusammenzubasteln ist purer Brainfuck.

Ich weiss leider nicht mehr, was ich damals genutzt habe, aber vermutlich gibt es das inzwischen eh nicht mehr.
Oder man benutzt als IDE einfach NetBeans.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#9

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 18:06
Oder man benutzt als IDE einfach NetBeans.
Genau. NetBeans 8.2 enthält einen brauchbaren visuellen Editor für Swing Oberflächen. Funktioniert prima, mit interaktiver Vorschau. Auch in Maven Projekten, eigene oder Drittanwender JavaBeans können benutzt werden.

Ein besonderes Framework oder zusätzliche IDE Plugins habe ich für Swing Oberflächen nie benötigt, mit Borland JBuilder und NetBeans geht es auch.

Siehe Screenshot im Anhang - das Erstellen des Layouts ging recht flott. Der generierte Code mag des einen oder anderen Auge strapazieren, aber da er ausgeblendet wird ist er genauso wenig störend wie der einer DFM Datei (über die man nicht sagen kann, dass sie einfach mit Grep durchsuchbar wäre, by the way).
Miniaturansicht angehängter Grafiken
unbenannt.png  
Michael Justin
habarisoft.com

Geändert von mjustin (18. Jan 2017 um 18:17 Uhr)
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#10

AW: GUI mit Java - Tipps?

  Alt 18. Jan 2017, 21:00
Was ich einfach auch mal in den Raum werfen möchte:

Qt und C++ ist auch "mal was anderes" als Delphi.

Wenn du wirklich bei Java bleibst, musst du nicht bei Swing und AWT bleiben. Seit Java 8 ist ja auch JavaFx8 bei Auslieferung mit an Board (gut man muss evtl noch die Zugriffsrechte anpassen; zumindest war das bei mir unter Eclipse der Fall; ja, ich tue mir das an ). JavaFx hat ein paar schöne Eigenschaften, die ich persönlich Swing zum Beispiel vorziehe. Das Schöne: Wenn man ohnehin Java 8 als untere Versionsgrenze hat, kann man auch gleich "moderne" Dinge wie Lambdas bei EventListenern verwenden...
Klar, GUI in Code direkt zu schreiben ist manchmal schon nervig, aber manchmal zwingt man sich dann wenigstens an dieser Stelle gleich früh generisch zu werden und in der View zu Abstrahieren und zu Gruppieren

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!

Geändert von BrightAngel (18. Jan 2017 um 21:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz