Hallo
In meinem Miniprojekt versuche ich den Fortschritt einer Berechnung in einer ProgressBar auf einer GUI (Klasse UF) abzubilden.
In der Klasse UF habe ich dazu eine Methode udpateProgressBar gebaut.
Damit in der Klasse Berechnung die progressBar updaten kann, musste ich die Methode updateProgressBar als public static definieren (somit musste ich auch die ProgressBar als static deklarieren).
Funktioniert auch alles.
Meine Frage: ist das der richtige Weg ?
Dann noch Zusatzfrage: ich tue mich immer noch etwas schwer mit dem Threading vs. Swing. Scheint euch das hier so sinnvoll umgesetzt
Danke und Gruss
In meinem Miniprojekt versuche ich den Fortschritt einer Berechnung in einer ProgressBar auf einer GUI (Klasse UF) abzubilden.
In der Klasse UF habe ich dazu eine Methode udpateProgressBar gebaut.
Damit in der Klasse Berechnung die progressBar updaten kann, musste ich die Methode updateProgressBar als public static definieren (somit musste ich auch die ProgressBar als static deklarieren).
Funktioniert auch alles.
Meine Frage: ist das der richtige Weg ?
Dann noch Zusatzfrage: ich tue mich immer noch etwas schwer mit dem Threading vs. Swing. Scheint euch das hier so sinnvoll umgesetzt
Danke und Gruss
Java:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
public class UF extends JFrame {
private JPanel contentPane;
private static JProgressBar progressBar;
private JButton btnNewButton;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UF frame = new UF();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void udpateProgressBar(int value) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setValue(value);
}
});
}
public UF() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
progressBar = new JProgressBar();
progressBar.setBounds(28, 142, 358, 14);
progressBar.setValue(0);
progressBar.setStringPainted(true);
contentPane.add(progressBar);
btnNewButton = new JButton("New button");
btnNewButton.setBounds(28, 28, 89, 23);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new Thread(new Runnable() {
public void run() {
Berechnung berechnung = new Berechnung();
}
}).start();
}
});
contentPane.add(btnNewButton);
setVisible(true);
}
}