Hallo zusammen!
Wenn ich die setText-Methode eines JLabel-Objekt durch einen Aufruf (quasi ein Rückruf)aus einer Helferklasse ausführe, wird der Label nicht aktualisiert. Neben setText() habe ich noch verschiedenes probiert: repaint(), repaint(1), validate, revalidate.
(Auch ein repaint() etc des übergeordneten JPanel zeigt keinerlei Wirkung.)
Das untenstehende Beispiel-Progrämmchen ist lauffähig.
Der Code besteht nur aus wenigen Zeilen, verteilt auf zwei Klassen.
Habt Dank für jede hilfreiche Antwort.
Wenn ich die setText-Methode eines JLabel-Objekt durch einen Aufruf (quasi ein Rückruf)aus einer Helferklasse ausführe, wird der Label nicht aktualisiert. Neben setText() habe ich noch verschiedenes probiert: repaint(), repaint(1), validate, revalidate.
(Auch ein repaint() etc des übergeordneten JPanel zeigt keinerlei Wirkung.)
Das untenstehende Beispiel-Progrämmchen ist lauffähig.
Der Code besteht nur aus wenigen Zeilen, verteilt auf zwei Klassen.
Habt Dank für jede hilfreiche Antwort.
Java:
package test.labels;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class LabelTest extends JFrame {
private JPanel contentPane;
private JLabel infoLabel;
public LabelTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(0, 0, 160, 120);
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnNewButton = new JButton("do something");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LabelHelper helper = new LabelHelper(infoLabel, contentPane);
helper.doSomething();
}
});
btnNewButton.setBounds(10, 11, 126, 23);
contentPane.add(btnNewButton);
infoLabel = new JLabel("info");
infoLabel.setBounds(10, 60, 126, 14);
contentPane.add(infoLabel);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LabelTest frame = new LabelTest();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
package test.labels;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class LabelHelper {
private JLabel infoLabel;
public LabelHelper(JLabel infoLabel) {
this.infoLabel = infoLabel;
}
public void doSomething() {
for (int i = 1; i<= 3; i++) {
// infoLabel wird nicht aktualisiert!
infoLabel.setText("Meldung " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
infoLabel.setText("Fertig");
}
}
Anhänge
Zuletzt bearbeitet von einem Moderator: