Hallo,
ich habe mal ein Beispiel zusammengestellt und wollte nochmal nachfragen wie man das jetzt genau macht mit den EDT.
Ist das so Ok, wie dass in der nicht auskommentierten Methode setTextinTextfield() programmiert wurde?
Sieht etwas seltsam aus.
ich habe mal ein Beispiel zusammengestellt und wollte nochmal nachfragen wie man das jetzt genau macht mit den EDT.
Ist das so Ok, wie dass in der nicht auskommentierten Methode setTextinTextfield() programmiert wurde?
Sieht etwas seltsam aus.
Java:
package edtKram;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class EdtTest extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField textField;
private JButton button;
public EdtTest() {
super("EDT Test");
setDefaultCloseOperation(EXIT_ON_CLOSE);
textField = new JTextField(20);
button = new JButton("Thread");
button.addActionListener(new ButtonListener());
getContentPane().setLayout(new FlowLayout());
getContentPane().add(textField);
getContentPane().add(button);
pack();
}
//private void setTextinTextField(String string){
// textField.setText(string);
//}
private void setTextinTextField(final String string){
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
textField.setText(string);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Thread thread = new Thread(){
public void run() {
button.setEnabled(false);
for(int i = 1; i <= 3; i++){
setTextinTextField(String.format("Thread %d", i));
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
button.setEnabled(true);
}
};
thread.start();
}
}
/**
* @param args
*/
public static void main(String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new EdtTest().setVisible(true);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}