Swing Projekt Herangehensweise Swing

DrHasenbein

Mitglied
Stehe vor folgender Aufgabenstellung:

Einen kleinen "Verkehrsplaner" mit Java Swing programmieren, der es ermöglicht Straßenteile(Kurven,Geraden und Kreuzungen)Fahrzeuge auf einer Karte zu platzieren.Anschließend soll es möglich sein eine Simulation zu starten, die die Fahrzeuge über die Straße navigiert.

Die Oberfläche dafür steht schon (Karte ist ein JPanel).

Jz ist die Frage wie die Wegstücke und Fahrzeuge am besten repräsentiert werden um die Funktionalität am einfachsten umzusetzen.

Meine Idee: Karte mit z.B 50x50 Kacheln(JPanels) befüllen. Jede Kachel weiß darüber bescheid, was auf ihr platziert ist und in welche Richtung dieses Stück zeigt(Straßenöffnung nach N/S/W/O). Die Fahrzeuge würden also von Kachel zu Kachel springen.Sobald dies funktioniert wäre es noch möglich die Kachel in weitere kleinere Blöcke zu unterteilen um einen flüssigeren Ablauf zu gewährleisten.

Vll hatte jmd von euch schonmal eine ähnliche Problematik und kann mir sagen, ob ich mit meinen JPanel-Kacheln total auf dem Holzweg bin und es eventuell einen alternativen sehr eleganten Lösungsansatz gibt.

Vielen Dank im Voraus
 

CroniD

Aktives Mitglied
Ja, den gibt es. Ich leite dich einfach mal zu diesem Thread weiter, weil es im Prinzip das selbe ist: http://www.java-forum.org/awt-swing-swt/111657-problem-doppelpufferung.html#post717661

In dem Thread findest du ein Code-Beispiel wie ein Kreis über ein JPanel bewegt wird. Im Prinzip müsstest du nur den Kreis mit dem Wagen (ich nehme mal an das ist ein IconImage) ind er paint(graphics) Methode ersetzen. Außerdem findest du in dem Thread auch ein paar nützliche Links zum Malen und Swing. Hoffe das hilft dir weiter. :)
 

DrHasenbein

Mitglied
Danke für den Beitrag.

Die Lösung mit dem wandern über x,yPosition++ innerhalb des Panels is soweit ja schön.Problematisch wird das ganze aber halt mit Gegenverkehr.Das Wegstück muss also logisch unterteilt sein.
 

CroniD

Aktives Mitglied
Bastel dir eine Methode, die dir anzeigt, ob sich bewegende Objekte bei aktueller Richtung und Geschwindigkeit treffen, also kollidieren.

Also diese Logik musst du so oder so implementieren, da werden dir einzelne Kacheln auch nicht weiterhelfen. ;)
Außerdem ist es besser dies von der GUI zu trennen. :)

Ich persönlich würde für die Straßenstücke eine eigene Klasse schreiben, die von JPanel erbt, in der dann Informationen wie Kurven, ob man auf den jeweiligen Pixeln ein Wagen anzeigen lassen kann usw. hinterlegt sind.

Dann würde ich eine eigene Klasse Wagen schreiben. In dieser Klasse würde ich ein Bild für den Wagen hinterlegen, sowie Variablen für Geschwindigkeit, aktuelle Position usw.

Für die Koordinatenberechnungen würde ich mir ein eigenes DatenModell schreiben, dass zum einen über eine Container-Fähigkeit (also Methoden wie add(wagen), remove(wagen) usw.) und über eine Koordinatenberechnungseinheit (also Methoden wie "boolean collision(wagen...)", moveTo(wagen) usw.) verfügt.

Dann würde ich mit eine Klasse schreiben, die von JPanel erbt, die als die große Spielfläche dient. In der würde ich dann in der paint() Methode zu nächst alle Kacheln zeichnen lassen, dann alle aktuellen Positionen der Wagen.

Die Koordinatenberechnung würde ich in einen eigenen Thread auslagern, der nebenbei läuft und alle 20 Millisekunden schläft. Dieser Thread würde dann beim DatenModell die Werte der Wagen abfragen, prüfen, die neuen Koordinaten berechnen, dann prüfen, ob eine Kollision vorliegt oder das auf der jeweiligen Kachel möglich ist, falls eine Kurve kommt würde ich mit Math.random() wohl eine mehr oder weniger zufällige Wahl der Richtung (rechts, gerade, links) wählen, dann checken, ob der wagen fahren kann oder warten muss und wenn dann alles stimmt würde ich die Koordinaten des Wagens neu setzen. Wenn alle Wagen durch sind, dann würde ich repaint() des JPanels der Spielfläche aufrufen.

So, mit Sicherheit habe ich einiges vergessen oder außer Acht gelassen, aber so hast du Daten und GUI gut getrennt. :)
 

Marco13

Top Contributor
Außerdem ist es besser dies von der GUI zu trennen.
Ich persönlich würde für die Straßenstücke eine eigene Klasse schreiben, die von JPanel erbt,...
Vielleicht IST es bei genauem Lesen nicht so, aber es KLINGT erstmal, als wäre das widersprüchlich. Es stimmt schon: Man sollte das GUI und die Berechnung trennen. Es müßte also irgendwas geben, was ein Straßenstück repräsentiert, und was nichts mit JPanel & Co zu tun hat.

(BTW: Da jetzt noch Kollisionen reinzubringen klingt aufwändig... davon war doch eigentlich auch nicht die Rede, oder? ???:L )

Es wäre wichtig, zu wissen, WIE stark vereinfacht das werden soll. Sollen alle Straßen 2spurig sein, und es nur Kacheln, geben, und nur die angesprochenen? Dann gäbe es ja einen Satz von Kacheln, die über die Öffnungsrichtungen beschrieben sein könnten:
NS
EW
NW
NE
SW
SE
NSW
NSE
...
und noch ein paar :)

Wenn das als Modellierung des eigentlichen Straßennetzes reicht, wäre es IMHO angebracht, die Interpolation, das Bewegen der Autos auf einem Straßensegment, nochmal davon zu trennen. Der Zustand jeses Autos könnte dann z.B. beschrieben sein durch eine Kachel (x,y), eine Information über die Straße, die das Auto fährt (z.B. NS auf einer NSE-Kachel), und einen Wert zwischen 0 und 1, der die Position beschreibt, wo das Auto gerade ist. Dieser Wert könnte dann in "beliebig vielen" Schritten von 0 bis 1 erhöht werden, um das Auto in "beliebig vielen" Schritten über die Kachel fahren zu lassen.

Nur ein Gedanke.
 

CroniD

Aktives Mitglied
Na ja, viele Wege führen nach Rom. Man kann natürlich für jede Teilaufgabe eine eigene Klasse schreiben. Das trägt zur sauberen Trennung bei und der Code würde verständlicher (evtl.). Die Kehrseite ist allerdings, dass man mehr Speicher braucht, evtl. auch mehr Rechenaufwand verursacht.

So oder so, vieles dürfte funktionieren. Aber zweifelsohne ist es keine einfache Aufgabe im Detail. :)
 

DrHasenbein

Mitglied
Danke für die Tipps.Hab das ganze jz über mehrfach geschichtete JPanels realisiert bei der die letzte eine drehbare Matrix aus Panels darstellt und auf welcher dann die Autos angezeigt werden.

Nochmals Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
G JavaFX Code in neues Projekt übernehmen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
L FX-Projekt: fast leere Fensterausgabe ohne Fehlermeldung AWT, Swing, JavaFX & SWT 6
N JavaFX Projekt nachträglich zu JavaFX Application machen? AWT, Swing, JavaFX & SWT 1
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
VPChief Eclipse: Projekt mit src ordner exportieren. AWT, Swing, JavaFX & SWT 76
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
ZH1896ZH MineSweeper Projekt: Testen nicht möglich AWT, Swing, JavaFX & SWT 6
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
MiMa Java Projekt nach JavaFX convertieren AWT, Swing, JavaFX & SWT 4
M Java Gui Projekt, Würfelspiel AWT, Swing, JavaFX & SWT 2
Sam96 JavaFX mit Sqlite Projekt mit jar zu groß AWT, Swing, JavaFX & SWT 10
A Wie baue ich das Bus-System in ein Java Projekt ein? AWT, Swing, JavaFX & SWT 5
B Pong Projekt mit LWJGL Klassen exportieren AWT, Swing, JavaFX & SWT 14
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
Tom299 JavaFX Projekt-Struktur AWT, Swing, JavaFX & SWT 2
S Projekt: Meisterschaft - Abspeichern bereits gemachter Schritte AWT, Swing, JavaFX & SWT 2
M JavaFX MSI oder EXE aus JavaFX Projekt erstellen? AWT, Swing, JavaFX & SWT 2
Birke Swing Neue Swing LayoutManager: TOnion Projekt AWT, Swing, JavaFX & SWT 10
R JavaFX Mein SceneBuilder Projekt AWT, Swing, JavaFX & SWT 3
D Ambitioniertes Projekt - Brauche Stichworte AWT, Swing, JavaFX & SWT 4
M GUI-Projekt realisieren AWT, Swing, JavaFX & SWT 9
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
D Java Projekt als Jar AWT, Swing, JavaFX & SWT 3
J jme neues projekt öffnen AWT, Swing, JavaFX & SWT 4
J Projekt Olympische Spiele AWT, Swing, JavaFX & SWT 12
F Netbeans Gui in BlueJ Projekt AWT, Swing, JavaFX & SWT 9
X Resourcen in Projekt einbinden AWT, Swing, JavaFX & SWT 7
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D Swing MVC in Projekt umsetzen AWT, Swing, JavaFX & SWT 71
N Swing Projekt - jar ausführen AWT, Swing, JavaFX & SWT 11
C Problem mit Swing Application Framework - Projekt beim AWT, Swing, JavaFX & SWT 2
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
C Mein erstes kleines Swing-Projekt - Probleme AWT, Swing, JavaFX & SWT 8
M Einstellung des Projekt-Verzeichnis in NetBeans AWT, Swing, JavaFX & SWT 4
T Projekt - ChatClient - JEditorPane - Smilies, Vektor AWT, Swing, JavaFX & SWT 2
D Events, Listener, GUI . Größeres Projekt AWT, Swing, JavaFX & SWT 4
M java projekt als exe kompilieren. AWT, Swing, JavaFX & SWT 2
T Swing Herangehensweise an "komplexeres" zu zeichnendes Gebilde AWT, Swing, JavaFX & SWT 9
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben