Button Array verschieben klappt nicht.

Status
Nicht offen für weitere Antworten.

Titanpharao

Bekanntes Mitglied
Hello World,

ich erzeuge ein JButton Array (Truhe extends JButton). Dann erzeuge ich mit spawnTruhe immer eine neue. Dann wird in der Schleife alle Truhen um eins im Array zurück gesetzt. Das funktioniert auch soweit. Mein Problem ist aber, das es immer nur eine Truhe anzeigt und auch nur eine existiert. Also man kann die alte nicht mehr anklicken. Weis einer woran das liegt?

Funktioniert etwa "truhen=truhen[i+1];" nicht?

Danke für schnelle Hilfe.

Code:
    public void spawnTruhe(int mnr){
		for(int i=0;i<truhen.length-1;++i){
			System.out.println(truhen[i].ki);
			truhen[i]=truhen[i+1];				
		}
    	truhen[truhen.length-1].ki=monsters.get(mnr).getKi();
    	truhen[truhen.length-1].grade=monsters.get(mnr).grade;
    	switch (truhen[truhen.length-1].grade) {
		case 1:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe1.gif"));break;
		case 2:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe2.gif"));break;
		case 3:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe3.gif"));break;
		default:break;
		}
    	truhen[truhen.length-1].setBounds(monsters.get(mnr).x*64, monsters.get(mnr).y*64,64,64);
    	truhen[truhen.length-1].setVisible(true);
    }
    public void loadtruhen(){
    	for(int i=0;i<truhen.length;++i){
    		truhen[i]=new Truhe(0,0);
    		truhen[i].setLocation(0, 0);
    		truhen[i].setVisible(false);
    		final int nr=i;
			truhen[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					ta.drop(truhen[nr].grade, truhen[nr].ki);
					truhen[nr].setVisible(false);
				}});
    		engine.panel_area.add(truhen[i]);
    	}
    }
 

Marco13

Top Contributor
"Liegt an der Referenz"? Man könnte ähnlich präzise sein und sagen: "Liegt am Code". Was genau ist jetzt die Frage? Soll eine neue Truhe in den Array eingefügt werden? Warum verwendest du keine ArrayList<Truhe>? (Von JButton zu erben ist übrigens ziemlich ... ungewöhnlich)

BTW:
Code:
switch (truhen[truhen.length-1].grade) {
      case 1:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe1.gif"));break;
      case 2:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe2.gif"));break;
      case 3:truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe3.gif"));break;
      default:break;
      }
->
Code:
truhen[truhen.length-1].setIcon(new ImageIcon("texture/other/truhe"+truhen[truhen.length-1].grade+".gif"))
(das ist "schöner", aber immernoch nicht "schön")
 

Titanpharao

Bekanntes Mitglied
Stimmt, aber kannst nicht davon ausgehen das am ende die Namen wirklich so heißen ;-)

Aber im moment gehts so^^ noch nix optimiert. Erstmal muss alles funktionieren.

Warum eine ArrayList? Will doch nur 10 Truhen haben. Also warum sollte ich dann eine list benutzen?

Nein nicht wirklich ein neuer Button. Nur eine Kopie des ersten. Aber nur die Eigenschaften.
Der Button soll "nachrutschen". Also zum Beispiel:

Vorher: Nachher
1 2
2 3
3 4

Zahlen stehen hier mal für die Eigenschaften. Mein Problem ist jetzt, dass er antscheind durch = nur auf das Obejekt verweist. Also am Ende sind immer alle der letzte hinzugefügte.


Warum nicht von JButton erben? Es verhält sich wie ein Button hat aber noch zwei weitere Werte.
 

Marco13

Top Contributor
Es war nicht klar, was du erreichen wolltest, und wie der bisherige Code aussieht. (Moment ... "war"? Es IST nicht klar :wink: )

FALLS die Frage sich darauf bezieht:
engine.panel_area.add(truhen);
Wenn du jetzt z.B.
truhen[3] = truhen[4];
ausführst, kriegt das Panel davon natürlich nichts mit. Du musst ggf. alle truhen vom Panel entfernen, dann den Array umbauen, und dann die Truhen neu ins Panel einfügen...
 

Titanpharao

Bekanntes Mitglied
Was wird wohl bei einem Null-Layout passieren, wenn ich etwas später drauf add? Nix :(

Also kann ich diese nicht entfernen. Es müssen bei den 10 Stück doch nur die X,Y Position das Icon und 2 Werte verändert werden. Die Buttons müssen fest verankert bleiben im Array. Auch kein neues, wie ich es schon probiert habe. Dann haben wir wieder das Problem, dass dieses noch nicht auf dem Spielfeld-Panel liegt. Ist zum verzweifeln :autsch:
 

Marco13

Top Contributor
Nicht von JButton zu erben und kein null-Layout zu verwenden wäre eine Alternative, aber ... wenn man die Frage stellt: "Wie kann ich mein Programm verbessern?" will man als Antwort i.a. nicht hören "Schreib' es neu". Vielleicht kannst du ja nach dem Erneuten einfügen die Bounds der Buttons neu setzen (so, wie du sie auch sonst setzt).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Button-Array überschreiben und dem Container zufügen? Allgemeine Java-Themen 2
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M JavaFX Button mit mehreren Aktionen? Allgemeine Java-Themen 7
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
Tacofan Button nicht mehr anklickbar machen Allgemeine Java-Themen 8
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
J Java eigenen Button programmieren (ob Cursor im Rechteck ist oder nicht..../button pressed or not) Allgemeine Java-Themen 6
F Klassen Klasse bei Button klick öffnen Allgemeine Java-Themen 11
J JScrollPane und Button erscheinen nicht Allgemeine Java-Themen 13
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
B Button im Web klicken Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
J Swing Eigenes Button-design Allgemeine Java-Themen 2
H WAV abspielen nach Button-Klick Allgemeine Java-Themen 4
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
A Button drücken Allgemeine Java-Themen 3
S Thread anhalten per Button ? Allgemeine Java-Themen 3
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
M HTTP Selenium button klicken Allgemeine Java-Themen 2
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
X Button während Thread aktiv ist disablen Allgemeine Java-Themen 11
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
R [Android]Wie dynamischen Button-Feld erstellen? Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
L mit Button jar.Datei öffnen? Allgemeine Java-Themen 5
1 URL mit Button öffnen Allgemeine Java-Themen 29
L Thread stoppen über Button funktioniert nicht Allgemeine Java-Themen 7
ModellbahnerTT Button mit Zahlen beschriften Allgemeine Java-Themen 1
E JTidy html "hidden" Button drücken Allgemeine Java-Themen 7
G Icon auf Button Allgemeine Java-Themen 5
N Button Allgemeine Java-Themen 3
G Schleife durch Button beenden Allgemeine Java-Themen 6
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
G default button für enter taste Allgemeine Java-Themen 3
T JTabbedPane nach Button-Klick wechseln Allgemeine Java-Themen 3
E Button disablen Allgemeine Java-Themen 8
T Button Action Allgemeine Java-Themen 10
G swt button Allgemeine Java-Themen 6
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
P Button automatisch drücken Allgemeine Java-Themen 5
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
E Button mit 2zeiliger Beschriftung Allgemeine Java-Themen 3
ElViZ HTML-Button mit Java "drücken" lassen? Allgemeine Java-Themen 3
MQue Button setEnabled() Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
MQue Button Attribute setzen Allgemeine Java-Themen 14
MQue Button ansprechen Allgemeine Java-Themen 5
MQue Button erzeugen mit 3 Klassen Allgemeine Java-Themen 3
MQue Button mit Icon und Beschriftung Allgemeine Java-Themen 7
MQue Button Event beim drücken und beim auslassen Allgemeine Java-Themen 7
P JComponenten (Button, JSlider, usw) erweitern Allgemeine Java-Themen 12
E Button: Event auslösen Allgemeine Java-Themen 7
E Mit Button ein Fenster öffnen Allgemeine Java-Themen 4
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
P invoke per button Allgemeine Java-Themen 5
D Button-Sprache und windowClosing Allgemeine Java-Themen 6
G Text und Bild/Icon im Label/Button positionieren/ausrichten Allgemeine Java-Themen 2
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
D Bild per Button painten Allgemeine Java-Themen 5
V Button schließen - NullPointerException Allgemeine Java-Themen 6
H Button ist nicht ansprechbar Allgemeine Java-Themen 4
S 100 Fehler bei Button machen :) Allgemeine Java-Themen 9
G Fenster durch eigenen Button minimieren Allgemeine Java-Themen 6
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben