[Java] Konflikt zwischen Label verschieben und setText() [Schulprojekt]
Hallo zusammen,
da mir mit diesem Projekt bei einer anderen Frage bereits gut weitergeholfen wurde möchte ich nochmal eine Frage stellen, aber zunächst nochmal die gesamtsituation:
Wir bauen mit Java das Brettspiel "Mensch ärgere dich nicht" nach und nutzen dafür die Netbeans IDE. Die Spielfiguren werden durch Labels, die ein Icon beinhalten dargestellt. Jetzt müssen diese Label natürlich verschoben werden, was auch kein Problem an sich darstellt. Das Problem besteht darin, dass man zwar die Labels mit label.setLocation(x,y) oder label.setBounds(x,y,h,w) verschieben kann, diese aber nachdem man den Text eines anderen Labels mit label2.setText("String") ändert wieder auf die ursprüngliche Position zurückgesetzt werden. Ich hoffe ihr könnte mir bei dem Problem weiterhelfen...
Du könntest alle Positionen speichern, Text ändern, Positionen wieder setzen.
Weiß nicht ob ihr sowas "dreckiges" benutzen dürft.
Das wäre theoretisch möglich, nur finde ich das extrem unschön und nervig das nach jedem Text ändern wieder aufzurufen, gibt es da nicht eine andere Möglichkeit? Beziehungsweise weiss jemand, woran das liegen könnte, ich hab nicht so wirklich viel Ahnung von Java...
in java benutzt man oft den swing layout manager:
das heisst du legst nciht selbst fest wo die bottuns, labels etc stehen mit koordinaten, sondern das macht er für er für dich.
normalerweise sagt man nur ob die buttons z.B. nebeneinandere oder übereinander etc sein sollen(mit Panels, borderlayout etc).
in einen fall ist es möglichweise so: sobald du settext aufrufst vergrössert sich die grösse des labels. Darauf hin sagt sich der layout manager: ah jetzt hat sich ja was geändert ich muss also nochmal neu berechnen wo ich die ganzen labels, buttons etc am besten hinpacke, und er kommt wiederzu dem selben schluss wie da wo er es zuvor hingetan hat.
Hm, das klingt logisch. Kann man dem den vielleicht mitteilen, dass man nicht alles neu gemalt haben will sondern nur das panel auf dem das stattfindet?
Vorweg, ich kenne mich nicht sonderlich mit Java aus, aber wäre es nicht sinnvoll das Spielfeld und die Spielfiguren durch Grafikobjekte darzustellen, statt labels zu zweckentfremden?
Natürlich musst du dafür eine Spielfeld und eine Spielfigur Klasse erstellen und EventHandler für die entsprechenden Inputevents registrieren, aber dann kannst du dir sicher sein dass sich alles genau so verhält wie du es Programmierst.
Vorweg, ich kenne mich nicht sonderlich mit Java aus, aber wäre es nicht sinnvoll das Spielfeld und die Spielfiguren durch Grafikobjekte darzustellen, statt labels zu zweckentfremden?
Natürlich musst du dafür eine Spielfeld und eine Spielfigur Klasse erstellen und EventHandler für die entsprechenden Inputevents registrieren, aber dann kannst du dir sicher sein dass sich alles genau so verhält wie du es Programmierst.
sry hatte den ersten post genu genug gelesen.
aber ich muss zustimmen das es wohl besser währe zu "malen", anstatt labels zu benutzten.
zum "malen" kann man z.B. eine unterklasse von "JPanel" bauen und die "paintComponent()" methode überschreiben:
in java benutzt man oft den swing layout manager:
das heisst du legst nciht selbst fest wo die bottuns, labels etc stehen mit koordinaten, sondern das macht er für er für dich.
normalerweise sagt man nur ob die buttons z.B. nebeneinandere oder übereinander etc sein sollen(mit Panels, borderlayout etc).
in einen fall ist es möglichweise so: sobald du settext aufrufst vergrössert sich die grösse des labels. Darauf hin sagt sich der layout manager: ah jetzt hat sich ja was geändert ich muss also nochmal neu berechnen wo ich die ganzen labels, buttons etc am besten hinpacke, und er kommt wiederzu dem selben schluss wie da wo er es zuvor hingetan hat.
Ich hab mich nach dieser äußerst hilfreichen Information für folgende funktionierende, wenn auch unschöne, Lösung entschieden:
Ich habe das Hintergrundbild [Spielfeld] mit den Labels [Spielfiguren] in ein seperates Form gepackt und die Buttons, Anzeigelabels etc in ein anderes. Jetzt habe ich zwar 2 Fenster, aber die Spielfiguren werden nicht auf 0 zurückgesetzt.
wärs nicht sinnvoller die weißen felder wo die figuren drauf landen können als feste label / buttons / what ever zu erstellen wo einfach nur die farbe geändert wird ? Dann muss man sich auch nicht um koordinaten usw. kümmern
wenn man es mit buttons macht kann man auch gleich somit sagen welche spielfigur bewegt werden soll durch den actionlistener
wärs nicht sinnvoller die weißen felder wo die figuren drauf landen können als feste label / buttons / what ever zu erstellen wo einfach nur die farbe geändert wird ? Dann muss man sich auch nicht um koordinaten usw. kümmern
wenn man es mit buttons macht kann man auch gleich somit sagen welche spielfigur bewegt werden soll durch den actionlistener
Das blöde ist dann nur, dass ich nachher 72 Buttons hätte
Schulprojekt [MusikVideo] Feedback 07/11/2011 - Music - 18 Replies Nabend ;) .. Hatte da mal eine Frage.
Habe folgendes MusikVideo erstellt:YouTube - ‪Two Steps from Hell - Dragon Rider ‬‏
Wie findet ihr es und was für eine Schulnote würdet ihr dem ganzen geben ?.. Damit ich weiss auf was ich mich im Musikunterricht einlassen kann ;) .. Am besten auch kleines Feedback, für kommende nicht an die Schule gebundene MusikVideos.
Hoffe euch gefällt das und ich wünsche euch noch einen guten Abend ;)
//LG INFERNIUS//
[Java] GUI aktualisieren - Schulprojekt 07/02/2011 - General Coding - 8 Replies Hi zusammen,
wir sollen in Informatik ein Projekt in Java veranstalten, wobei ich mich mit einem Kollegen für eine Umsetzung des bekannten Brettspiels "Mensch ärgere dich nicht" entschieden habe. Wir haben jetzt angefangen für jedes Team einzelne Klassen zu schreiben etc. ...
Hier erstmal ein Bild des jetztigen Standes:
http://img534.imageshack.us/img534/2223/javamdn.j pg
Wenn man auf "Startaufstellung" klickt, dann sollten zuerst alle 16 Spielfiguren initialisiert werden und danach auf...
IP Konflikt ?!?!?!? Help. 05/19/2010 - Technical Support - 11 Replies Moin.
Ich Lade gerade etwas mit µTorrent.
Mein Lappy Sagte mir, dass es ein IP Adressen Konflikt gibt, da jemand anderes die Selbe IP hat wie ich.
Ich habe 5 Laptops angeschlossen aber nur einer ist an.
Zudem habe ich noch 2 Pc´s die ebenfalls aus sind.
Ip Adressen Konflikt 11/05/2009 - Metin2 Private Server - 5 Replies Hi,
Wenn ich Virtual Pc Starte ( Auf Hamachi Eingstellt ) zeigt er mir unten an "Ip Adressen Konflikt" und bei FTERM beim connecten genau das selbe.
Bitte um Hilfe