Java: Ändra en JLabel från en annan class?

Permalänk
Medlem

Java: Ändra en JLabel från en annan class?

Jag har lyckats med en (l_total) men jag vill lägga till tre till (l_sec, l_min, l_hour). Självklart så finns alla JLabel's i en JFrame i andra classen.

public class Loop implements Runnable {

private JLabel l_total;

public Loop(JLabel t){

this.l_total = t;

}

public void run() {

l_total.setText("Totalt: ");

}

}

Hur gör jag för att lägga till flera? Jag har provat det jag själv tyckte va en självklarhet men det gick inte.

Tack.

Permalänk
Skrivet av Neztman:

Jag har lyckats med en (l_total) men jag vill lägga till tre till (l_sec, l_min, l_hour). Självklart så finns alla JLabel's i en JFrame i andra classen.

public class Loop implements Runnable {

private JLabel l_total;

public Loop(JLabel t){

this.l_total = t;

}

public void run() {

l_total.setText("Totalt: ");

}

}

Hur gör jag för att lägga till flera? Jag har provat det jag själv tyckte va en självklarhet men det gick inte.

Tack.

Vad menar du exakt med att lägga till?
Vill du ha tillgång till dom i din Loop-klass?

Lägg till dom som parametrar i din kontruktor, dvs;

public Loop(JLabel t, JLabel h, JLabel m, JLabel s) { ...

Annars får du göra dom publika i din JFrame men det ska du nog undvika.

Skickades från m.sweclockers.com

Permalänk
Medlem

Det löste saken. Försökte göra på det sättet men måste ha missat någonting då. Tack så mycket!

Permalänk
Medlem
Skrivet av equals(null):

Vad menar du exakt med att lägga till?
Vill du ha tillgång till dom i din Loop-klass?

Lägg till dom som parametrar i din kontruktor, dvs;

public Loop(JLabel t, JLabel h, JLabel m, JLabel s) { ...

Annars får du göra dom publika i din JFrame men det ska du nog undvika.

Skickades från m.sweclockers.com

Loop skulle kunna ta en instans av din JFrame-klass och sedan komma åt labels genom dess interface. Typ

private Map<String, JLabel> labelMap = new HashMap<>(); // Java 7-notation. Tror det fungerar så här.. public void setLabel(String labelIdentifier, String string) { JLabel label = labelMap.get(labelIdentifier); if (label != null) { label.setText(string); } } // ... // På class Loop: private DinJFrameKlass labelParent; public Loop(DinJFrameKlass labelParent) { this.labelParent = labelParent; } public void run() { labelParent.setText("label1", "Jag gillar glass"); labelParent.setText("nysLabel", "Prosit!"); // och så vidare.. }

uppdaterade koden lite
Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Verkar användbart, kommer nog behöva det senare. Tack!