Positionieren von Objekten

  • Themenstarter Themenstarter crystal69
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

crystal69

Gast
Hallo!
Ich habe ein Problem und komme einfach nicht weiter. Jede suche war erfolglos. Ich weiß, dass ich über den Mausevent die Koordinaten des Klicks erhalten kann. Diese möchte ich dazu verwenden, um ein ImageIcon an die Position zu packen. Leider finde ich weder bei JPanel, JFrame noch sonst wo eine geeignete Methode. Im Moment habe ich in einem Frame ein Panel mit einem Spielfeld ImageIcon. Ich möchte jetzt theoretisch ein weiteres Panel unsichtbar darüberlegen auf dem die Spielsteine mit Koordinaten gesetzt werden. DAs Problem wie gesagt liegt wohl daran das es alles Gif-Bilder sind. Weiß jemand eine geeignete Methode oder bessere Herangehensweise?
Vielen dank im Voraus,
crystal69
 
was ist deine Frage, wie du pixelgenau positionierst?
mit nullLayout und setBounds()
 
Wenn du an den Koordinaten eines Mausklicks ein Bild möchtest, dann solltest du die Position des letzten Klicks in eine Variable speichern und das Bild dann in der Methode paintComponent(Graphics g) deines JPanels mittels g.drawImage(...) zeichnen.
Du könntest jedoch auch ein JLabel zur Anzeige der Grafik verwenden, das du dann mit setLocation(...) positionierst.
 
Hallo!
Manchmal sieht man den Wald vor lauter Bäumen nicht. Hab das Bild schon in einem Label, setLocation funktioniert auch. Leider muss ich jetzt wirklich ein weiteres Panel über meine Spielfläche legen, da man anscheinend auf einem Panel das komplett mit einem icon gefüllt ist nichts drauflegen kann (erscheint immer daneben). Oder weiß jemand,wie man dieses Problem lösen könnte. Trotzdem danke, hab die Methode einfach nicht gefunden, arbeite das erste mal mit Grafiken.
crystal69
 
Nee, hab ich auch noch nicht gemacht. Habe jetzt beide Panels OverlayLayout zugewiesen und die Opaque auf false gestellt, leider liegen die Panels immernoch nicht übereinander. Warum rätst du vom null-Layout ab? Danke für deine schnellen Antworten.
 
Da das null-Layout mit festen Pixelkoordinaten arbeitet, ist es ziemlich unflexibel (es sieht zum Beispiel sehr seltsam aus, wenn sich die Fenstergröße ändert). Mit null-Layout wird dieses Programm aber das gewünschte Ergebnis liefern.
 
Hallo!
Also im Konstruktor erstelle ich jetzt mein Spielfeld mit den Buttons und alles was ich brauche. Das Panel in dem sich alle Komponenten befinden hat jetzt ein Null-Layout. Ich habe die Buttons in ein Panel gepackt, die auszuwählenden Spielsteine in ein zweites Panel und das Spielfeld in ein drittes Panel. Diese Panels kann ich dank dem NullLayout des Hauptpanels super positionieren. Leider füge ich die Spielsteine ja nachträglich diesem Panel hinzu und sie verschwinden immernoch hinter panel3 mit dem Spielfeld. Egal ob ich die Komponenten auf Opaque stelle oder nicht, es Passiert nix. Problem immernoch nicht gelöst.
 
Nochmal nachgedacht drüber. Ich füge dem Hauptpanel den Spielstein hinzu, nachdem ich dem Frame im Konstruktor das Hauptpanel übergeben habe. Welche Methode muss man benutzen um das Frame zu aktualisieren? Mit repaint() scheint es nicht zu gehen, hab nämlich das Spielfeld ausgeblendet und der Spielstein ist nicht da.
 
Hi!
Hab jetzt eine Kombination aus NullLayout und Layered Pane als Hintergrundbild für dir Spielfläche funktioniert prima. Panels scheint man nicht in den Hintergrund packen zu können. dAnke für die Hilfe Merlin!
crystal
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben