Keine Änderungen an JLabel durch Array möglich

Status
Nicht offen für weitere Antworten.

besus

Mitglied
Hallo,

Ich habe da ein Problem mit einem Array. Und zwar, wenn ich eine Eigentschaft an einem JLabel innerhalb des Konstruktors ändere ist alles ok (grün markierte Zeile). Aber wenn ich in der Methode "setSpielfeld" etwas ändere (rot markierte Zeile) hat es keine Auswirkungen... ich komme einfach nicht dahinter wieso nicht.
Die Labels sind sichtbar und auch das Spielfeldmuster wird korrekt dargestellt. Habe den Code gekürzt. setText funktioniert bei der grünen Markierung bei der roten Markierung aber nicht. Es sind keine Auswirkungen sichtbar. Selbst setBackground(...); geht nicht. Egal was ich ändere, man sieht es nicht. Die Labels sind aber alle sichtbar gemacht worden im Konstruktor. Ich hoffe ihr könnt mir helfen.

Habe zu Testzwecken die beiden System.out's in setSpielfeld hinzugefügt um zu überprüfen ob von der Hauptfunktion auch die Werte übergeben werden. Das klappt auch einwandfrei. Es kommt auch keine Fehlermeldung und nichts, eigentlich müsste es doch so funktionieren wie ich es gemacht habe...

Nochmal in kurzform:
Spielfeld sichtbar. Die einzelnen Felder (hier die Labels) lassen sich auch ändern. Zumindest im Konstruktor, in der Methode "setSpielfeld" jedoch nicht.

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Spielfeld extends JPanel
{

	/* Erstellen des Spielfeldes.
	 *  Schachbrettartig mit einer Dimension von 
	 *  10x10 Feldern. */
	
	private JLabel schachbrett[][] = new JLabel[10][10];

	/* Konstruktor um das Spielfeld zu erstellen */
	Spielfeld()
	{
		/* Festlegung des Layouts */ 
		this.setLayout(new GridLayout(10,10));
		int k = 0;
		
		/* Erzeugen des Schachmusters */
		
		
		for(int i=0; i<10; i++)
		{
	             .... erzeugt das Schachbrettmuster (hab den Code gekürzt)
		}
               [COLOR="Lime"]schachbrett[0][0].setText("Test");[/COLOR]			
        }
	
	/* Setzen der Spielfiguren auf dem Spielfeld
	 * @param x gibt die x Koordinate der Figur an
	 * @param y gibt die y Koordinate der Figur an 
	 * @param figur gibt das Symbol der Figur an*/
	
	public void setSpielfeld(int x, int y, String figur){
                          System.out.println("Koordinaten: x: "+x+"y: "+y);
                          System.out.println(figur);
               [COLOR="Red"]schachbrett[y][x].setText(figur);[/COLOR]
	}
	
}
 

besus

Mitglied
Muss leider gleich los. Damit es lauffähig ist bräuchtest du auch noch die Spielelogik. Ich werde es heute Mittag hochladen und einen Link posten.
 
S

SlaterB

Gast
> Muss leider gleich los. Damit es lauffähig ist bräuchtest du auch noch die Spielelogik.

stimmt nicht unbedingt bzw. wäre auch gar nicht wünschenswert,
ein einfacher Button, der setSpielfeld() aufruft, reicht,

wenn das aber dann funktioniert und mit der Spielelogik dagegen nicht,
dann musst du wirklich die Spielelogik posten, denn dann liegt ja dort der Fehler ;)
 

besus

Mitglied
Hallo,

Alo habe mal Testweise mein Hauptfenster aufs nötigste Reduziert. Es geht leider immer noch nicht, selbst ohne Spielelogik. Aber lauffähig ist es jetzt. Ihr könnt es euch selbst ansehen. Alle Änderungen an den Labels im Spielfeld über die Methode setSpielfeld bleiben unsichtbar. Auch repaint(); hat nicht geholfen.

Achja ich weiss die Switch kann ich noch deutlich verkürzen und im Haupfenster sollte ich statt setBounds, setLocation verwenden. Das werde ich noch ändern. Aber spielt ja hier keine Rolle;)

Code:
import java.awt.BorderLayout;
import javax.swing.JFrame;


public class Hauptfenster extends JFrame
{
	private static final long serialVersionUID = -1421353940759582925L;
	private Spielfeld feld;

	Hauptfenster()
	{
		this.getContentPane().setLayout(new BorderLayout());
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setSize(250,250);
		this.setResizable(false);
		feld = new Spielfeld();
		this.add(new Spielfeld());
		this.setBounds(350, 250, 250, 250);
		this.pack();
		this.setFiguren();
	}
	
	
	public void setFiguren()
	{
		int x=1;
		int y=3;
		String figur = "test";
		this.feld.setSpielfeld(x, y, figur);
	}

	public static void main(String[] args) {
		new Hauptfenster();
	}
}

und hier der Code vom Nebenfenster Spielfeld. Diesesmal ungekürzt.

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Spielfeld extends JPanel
{
	private static final long serialVersionUID = -8533454454921642584L;
	/* Erstellen des Spielfeldes.
	 *  Schachbrettartig mit einer Dimension von 
	 *  10x10 Feldern. */
	
	private JLabel schachbrett[][];

	/* Konstruktor um das Spielfeld zu erstellen */
	Spielfeld()
	{
		 schachbrett = new JLabel[10][10];
		/* Festlegung des Layouts */ 
		this.setLayout(new GridLayout(10,10));
		int k = 0;
		
		/* Erzeugen des Schachmusters */
		
		
		for(int i=0; i<10; i++)
		{
			for(int j=0; j<10 ;j++)
			{
				/* Hilfsvariable um Muster zu erzeugen */
				k = k%2;
				
				switch(k)
				{
					case 0:
					schachbrett[i][j] = new JLabel();
					schachbrett[i][j].setOpaque(true);
					schachbrett[i][j].setBackground(Color.PINK);
					schachbrett[i][j].setSize(50, 50);
					schachbrett[i][j].setPreferredSize(new 
					this.add(schachbrett[i][j]);
					k++;
					break;
					case 1:
					schachbrett[i][j] = new JLabel();
					schachbrett[i][j].setOpaque(true);
					schachbrett[i][j].setBackground(Color.WHITE);
					schachbrett[i][j].setSize(50, 50);
					schachbrett[i][j].setPreferredSize(new Dimension(50,50));
					this.add(schachbrett[i][j]);
					k++;
					break;
					default:
					break;
				}
			}
		k++;
		}
		schachbrett[0][0].setBackground(Color.BLUE);
		schachbrett[9][0].setBackground(Color.BLUE);
		schachbrett[0][9].setBackground(Color.BLUE);
		schachbrett[9][9].setBackground(Color.BLUE);
                [COLOR="Lime"]schachbrett[6][3].setText("test");[/COLOR]
	}
	
	/* Setzen der Spielfiguren auf dem Spielfeld
	 * @param x gibt die x Koordinate der Figur an
	 * @param y gibt die y Koordinate der Figur an 
	 * @param figur gibt das Symbol der Figur an*/
	
	public void setSpielfeld(int x, int y, String figur)
	{
		System.out.println("x"+ x + "y" +y);
		System.out.println(figur);
		[COLOR="Red"]schachbrett[x][y].setText( figur);[/COLOR]
	}
}

Zum Besseren Verständnis habe ich die beiden kritischen Punkte wieder markiert. Bei der grünen Markierung kann ich die Label Eigenschaft ändern ,bei der roten nicht.
Achja und ich weiss nicht ob ich die Spieleloik rausgeben darf. Muss ich erst nachfragen. Aber ich glaube die brauchen wir auch gar nicht für ads problem, geht ja ohne auch nicht.
 
S

SlaterB

Gast
> feld = new Spielfeld();
> this.add(new Spielfeld());

das Objekt, das angezeigt wird, ist ein anderes, als das in der Variablen feld,
Änderungen in feld sind also derzeit völlig irrelevant für die Anzeige,
ändere es in

feld = new Spielfeld();
this.add(feld);

-------

> this.setVisible(true);

besser erst ganz am Ende des Konstruktors aufrufen
 

besus

Mitglied
Yeah, ihr seid echt die Java Götter. Jetzt gehts! Naja das kommt davon, weil ich halt vorher keine Referenz von meinem Spielfeld gespeichert hatte. Also danke
 
G

Gast2

Gast
du kannst deine JLabel sache auslagern in eine eigene methode

Java:
private JLabel createJLabel(Color c)
{
JLabel l = new JLabel();
l.setBackground(c);
...usw.

return l;

}

dann hast du den ganzen Code in deinem switch weg...

dann kannst es so adden

Java:
if(k == 0) this.add(createLabel(Color.WHITE))
else this.add(createLabel(Color.PINK))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
gamebreiti auf usereingabe warten mit GUI(nur Labels, Buttons etc. keine Texteingaben) AWT, Swing, JavaFX & SWT 3
P Swing JTable keine Markierung nach Button klick AWT, Swing, JavaFX & SWT 0
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
N JavaFX Keine Dynamic AWT, Swing, JavaFX & SWT 2
W Swing Ausführung einer .jar zeigt keine Reaktion AWT, Swing, JavaFX & SWT 4
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
N Swing JTable mit Sorter: Keine Sortierung bei Klick in Header AWT, Swing, JavaFX & SWT 3
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
A trotz setSize keine breite AWT, Swing, JavaFX & SWT 4
Q JTable - Keine Spaltennamen AWT, Swing, JavaFX & SWT 3
H Swing Keine Rückmeldung (freeze) bei setVisible(false) oder dispose() AWT, Swing, JavaFX & SWT 4
B JEditorPane lädt keine Schriftfarbe in HTML AWT, Swing, JavaFX & SWT 2
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe auf Console und List AWT, Swing, JavaFX & SWT 13
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
N Swing Netbeans 7.1 keine DesktopApplication mehr möglich ? AWT, Swing, JavaFX & SWT 15
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
C Swing JFrame nimmt keine anderen Elemente auf AWT, Swing, JavaFX & SWT 13
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
A Swing JTable benutzt keine Checkbox für Booleans AWT, Swing, JavaFX & SWT 9
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
C MouseMotionListener fired keine Events mehr wenn in Button AWT, Swing, JavaFX & SWT 2
D Fenster will keine Ausgabe geben>:( AWT, Swing, JavaFX & SWT 3
K Applet erkennt keine Frameverkleinerung AWT, Swing, JavaFX & SWT 5
O keine ähnliche Farben durch Random in Java AWT, Swing, JavaFX & SWT 21
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
P Kennt awt.list keine Tastatureingabe? AWT, Swing, JavaFX & SWT 3
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
H Swing JScrollPane bekommt keine ScrollBars AWT, Swing, JavaFX & SWT 5
bluerob Nach RowSorter -> Keine Tabellenüberschreibung möglich AWT, Swing, JavaFX & SWT 7
V JTextField nimmt keine Eingaben an, nach nachträglichem setVisible des JWindows AWT, Swing, JavaFX & SWT 4
aze JTextField:Keine Markierung AWT, Swing, JavaFX & SWT 6
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
Fu3L Keine Transparenten JTextComponents möglich mit Nimbus L&F? AWT, Swing, JavaFX & SWT 5
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
B LayoutManager mischen keine gute Idee? AWT, Swing, JavaFX & SWT 9
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
B JScrollbarPane zeigt keine scrollbars AWT, Swing, JavaFX & SWT 2
I Panel scheint keine Größe zu haben AWT, Swing, JavaFX & SWT 3
aze GridLayout: Keine automatische Ausdehnung AWT, Swing, JavaFX & SWT 2
1 JFrame bleibt leer, keine Ahnung warum AWT, Swing, JavaFX & SWT 7
M SWT keine Scrollbar bei widgets.List und GridLayout AWT, Swing, JavaFX & SWT 2
P SWT Tree - Keine Selection zulassen AWT, Swing, JavaFX & SWT 4
T SWT Keine Anzeige der Widgets nach Comboauswahl AWT, Swing, JavaFX & SWT 2
1 GeneralPath-Kreise werden keine Kreise AWT, Swing, JavaFX & SWT 2
hdi Swing setPreferredSize zeigt keine Änderung AWT, Swing, JavaFX & SWT 2
R AWT [Anfänger] keine atives Aussehen von Buttons AWT, Swing, JavaFX & SWT 4
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
C Frame repaint hat keine Wirkung AWT, Swing, JavaFX & SWT 6
L Swing JPanel sendet keine KeyEvents AWT, Swing, JavaFX & SWT 22
J Swing - ich sehe keine Linie, andere schon AWT, Swing, JavaFX & SWT 6
S JDialog gibt keine Nachrichten ueber sein Schliessen..? AWT, Swing, JavaFX & SWT 3
C JTextArea zeigt keine Scrollbalken AWT, Swing, JavaFX & SWT 18
B Heavyweight Popup lässt keine MouseEvents durch AWT, Swing, JavaFX & SWT 2
K JDialog zeigt keine Komponenten wenn es modal ist AWT, Swing, JavaFX & SWT 2
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
G JTable zeigt keine Spaltenheader AWT, Swing, JavaFX & SWT 7
L JDialog-kann keine Größe setzen AWT, Swing, JavaFX & SWT 4
F Thread macht keine Pause AWT, Swing, JavaFX & SWT 22
W Threads und trotzdem keine Nebenläufigkeit AWT, Swing, JavaFX & SWT 13
G Keine Anzeige des Balkens AWT, Swing, JavaFX & SWT 3
F JScrollPane mit JPanel drinne zeigt keine Scroll-Leisten AWT, Swing, JavaFX & SWT 7
K keine Zeichenfläche sichtbar AWT, Swing, JavaFX & SWT 2
J ActionListener nimmt keine for()-Schleife? AWT, Swing, JavaFX & SWT 4
M JDialog + JFrame + keine Java Tasse AWT, Swing, JavaFX & SWT 9
G keine ScaledInstance von BufferedImage? AWT, Swing, JavaFX & SWT 6
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
C Jar Datei ist ausführbar aber zeigt keine icon's an AWT, Swing, JavaFX & SWT 18
S JList gibt nach Sortierung mit Collections keine Anzahl mehr AWT, Swing, JavaFX & SWT 3
N Trotz richtiger ListSelectionMode kann ich keine Zeile sel? AWT, Swing, JavaFX & SWT 4
technolion FileDialog/keine Multi-Selektion vs. JFileCHooser/kein LaF AWT, Swing, JavaFX & SWT 2
S getSize gibt keine Größe wieder AWT, Swing, JavaFX & SWT 4
K Keine SWT-Komponenten-Gruppe in Palette des Visual Editor AWT, Swing, JavaFX & SWT 2
M Keine Buttons oder sonstige Objekte in JFrame unter Linux AWT, Swing, JavaFX & SWT 4
W Vom JPanel bekomme ich keine Events AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben