Programmoberfläche mit Java-Swing - Herangehensweise

Shisu

Mitglied
Hallo Leute,

die Suche (sei es in Google oder der Forensuche) lief leider erfolglos, da meine Frage nicht sonderlich schwer ist, jedoch eine Frage bezüglich der Herangehensweise enthält:

Ich steige von C++ auf Java um und möchte ein Programm schreiben. Wie ich einzelne Buttons und andere GUI-Elemente (Checkboxes, Textfelder,...) einfügen kann weiß ich. Ich möchte nun aber vernünftig sortiert (in form von "durchdacht") ein Kartenspiel erstellen, welches auf dem GUI simpel einmal die Hand der "Bank" und einmal die Hand des "Spielers" gegenüberstellt.
Mir fällt der Schritt von dem GUI als einziges darzustellendes Element zu dieser gruppierten Form sehr schwer, meine mangelnde Vertrautheit mit den zu benutzenden Klassen tut ihr Übriges: Es bleibt bei einem JFrame, richtig? Gibt es dann mehre JPanel? Oder einfach ein Sammelsurium von Elementen auf einem Panel?

Ich hoffe ihr versteht die Frage und könnt mir helfen, ich weiß einfach nicht, wie ich das gruppieren soll... -.-'

Gruß Shisu
 

njans

Top Contributor
Also generell ist ein JFrame als Repräsentation nicht verkehrt. Wie du das mit den Karten machst, kommt wohl auf das Kartenspiel an. Du könntest z.B. für jede Karte ein JPanel nehmen und diese darauf darstellen. Oder du machst einfach je ein JPanel für die Bank und den Spieler.
Ist schwer zu sagen, was man da empfehlen würde, ohne ein paar Informationen zu haben. Allgemein bist du aber meistens mit JPanels, LayouManagers, evtl. JLabel, gut bedient.
 

Shisu

Mitglied
Hey Leute,

ausgehend von eurer beiden Hinweisen würde ich das Spielfeld in etwa so einschätzen... Grafik des Spielfelds.

Ist es also Richtig, dass sich ein JFrame darum herum befindet, sich darin das Layout mit den Schwarzen Linien befindet und sich darin einmal rechts ein JPanel mit einer Art GridLayout befindet, während sich links zwei JPanels (Rot) befinden? ... naja, ich denke, dafür wird es kein gescheites Layout geben? Die innersten Elemente links wie Karten darf ich dann wohl absolut setzen, richtig?

Ich hoffe, meine Frage ist nun nicht zu nah am Projekt und danke für bereits gestellte sowie kommende Hilfe!

Gruß Shisu
 

ssoul26

Bekanntes Mitglied
Für die Karten würde ich GridLayout benutzen, da kannst du alles über die GridBagConstraints einstellen, bist dann super flexibel!
 

njans

Top Contributor
GridLayout benutzen, da kannst du alles über die GridBagConstraints

Du meinst wohl eher GridBagLayout. Das sollte man mit Vorsicht genießen, denn es ist zwar mächtiger, aber auch komplexer als andere Layouts. Eine schöne alternative dazu ist, Layouts auf Paneln zu verwenden und diese ineinander zu schachteln.
 

ssoul26

Bekanntes Mitglied
Du meinst wohl eher GridBagLayout. Das sollte man mit Vorsicht genießen, denn es ist zwar mächtiger, aber auch komplexer als andere Layouts. Eine schöne alternative dazu ist, Layouts auf Paneln zu verwenden und diese ineinander zu schachteln.

Jup! Hast Recht, natürlich meine ich GridBagLayout. Alles ist anfangs komplex :rtfm: Nach paar Übungen hat man den Dreh raus. Da sollte man keine Angst vor anfänglicher Komplexität haben!
 

ssoul26

Bekanntes Mitglied
Hey ssoul26,

Natürlich "sollte" man sich nicht abschrecken lassen, aber gerade als Neuling im GUI-Bereich sollte ich mein erstes Java-Programm doch besser etwas simpler beginnen, meinst du nicht?

Gruß Shisu

Prinzipiell stimme ich dir schon zu, aber so schwer ist es wirklich nicht! Die meisten haben angst davor, das GridBagConstraint nicht richtig zu verwenden, aber für den Anfang reichen nur die Aufrufe, gridX und gridY. Damit kannst du alles platzieren wohin du willst.


Bsp.: Links Label, rechts Textfeld (geht auch gut mit FlowLayout)
Java:
GridBagConstraint c = new GridBagConstraint();
c.gridx=0;
c.gridy=0;
panel.add(new JLabel("huhu"),c);
//jetzt eins nach rechts springen
c.gridx=1;
panel.add(new JTextField(80),c);
 

Shisu

Mitglied
Hallo liebe Leute,

ein hoffentlich letztes mal möchte ich zu diesem Thema eine Frage stellen.

Ich bin mir nun relativ im Klaren, wie ich die visualisierung gestalten kann. Eine Frage habe ich jedoch: Das Programm selbst "hat" das GUI doch, oder? Zumindest sähe so meine Variante aus. Nun frage ich mich jedoch, wie so die Ereignisverwaltung vernünftig (d.h. nach der OOP) realisiert wird. Ich kann aus der Unterklasse GUI ja schlecht eine Methode in der besitzenden Klasse aufrufen, oder?

Ist das gerade unnötig, weil meine Vorstellung von der "Hierarchie" falsch sind, oder muss ich das über etwas wie eine Methode "getEvent()" lösen, die dann auf Anfrage die nötigen Informationen bereitstellt?

Viele Grüße und vielen Dank,
Shisu
 
V

vanny

Gast
Du kannst auch alles in eine Klasse Schreiben ^^ (Ist natürlich das schlimmste, was du machen kannst).
Das MVC-Pattern ist dort eine Möglichkeit.Klick mich mal
Wie und wo du was verwaltest, hängt aber von Dir ab. Sei kreativ :).

Gruß Vanny
 

Shisu

Mitglied
Hey Vanny,

ich habe mir das MVC-Schema angesehen, doch verstehe ich nach viel zu viel Details immernoch nicht, wie genau das Event auf dem GUI in den Controller kommt. Sehe ich den Wald vor lauter Bäumen nicht?!
Oder ist es tatsächlich so schwer?

Gruß Shisu
 

njans

Top Contributor
Listener in Java werden an Graphischen Komponenten "befestigt" und werden dann benachrichtigt, wenn etwas an der Komponente passiert. Bekannte Vertreter: ActionListener, ChangeListener, MouseListener, etc.
 

Shisu

Mitglied
Listener in Java werden an Graphischen Komponenten "befestigt" [...]

Hey Njans,

das kenne ich ansich bereits, doch bisher habe ich nicht versucht, einen eigenen zu schreiben. Muss ich das in diesem Falle tun, oder wie kann ich auf den Listener Zugreifen? Auch dieser müsste doch in der GUI Klasse - verborgen vor der Oberklasse - liegen?

Gruß Dennis
 

njans

Top Contributor
Du implementierst das Interface in einer neuen Klasse/ Anynomen Klasse/Innere Klasse und gibst dann dem Listener somit die gewünschte Funktion.
So hat der ActionListener nur die Methode actionPerformed (ActionEvent), welche du überschreibst.
 
V

vanny

Gast
Es ist zumindest nicht leicht :) und es gibt verschiedene Herrangehensweisen.
Wichtig ist erstmal für den Einstieg nur, dass Du es schaffst, die Logik von der GUI zu trennen eben mit einer Klasse die das "Handeln" übernimmt.
GUI: zeigt was los ist.
DatenModell: weiss was los ist
Controller: macht was los :p

Gruß Vanny

PS: am simpelsten für den Grundeinstieg finde ich das Beispiel, das Threadpool am Ende des Tutorials gepostet hat.

Gruß Vanny
 

Shisu

Mitglied
PS: am simpelsten für den Grundeinstieg finde ich das Beispiel, das Threadpool am Ende des Tutorials gepostet hat.

Gruß Vanny

Hey Vanny, hey njans.

@Njans: Leider fehlte mir bei deiner Antwort der Durchblick, ich habe sie leider nicht richtig verstehen können.

@Vanny: Oben genanntes Beispiel hat mir nun die Augen geöffnet. Die Antwort, die meine Frage exakt beantwortet hätte, wäre: "Der Listener wird zunächst dem GUI und anschließend dem jeweiligen Objekt übergeben. Der Listener muss nicht dem GUI selbst gehören.".

Danke an alle, jetzt sollte es soweit wieder fluppen.

Gruß Shisu
 

njans

Top Contributor
Okay, dann eben ein Beisiel (annonyme Klasse):
Java:
JButton button = new JButton("Mein Knopf");
button.addActionListener(new ActionListener() {
  
  public void actionPerformed(ActionEvent e)
  {
     // hier machst du etwas, wenn man den Button anklickt
  }
};
 

Shisu

Mitglied
@Njans:
Ich habe das, was ich wissen wollte, ja nun verstanden. Und dieser Part fehlt in deinem Beispiel sogar, danke trotzdem für deine Mühen! :)

@Vanny:
Die Antwort hast du ja dennoch geben können, von daher: Danke vielmals! ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
sasnitzer java augensumme von zwei würfeln ist 1 Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben