Hallo! Ich möchte eine ProgressBar programmieren, die den Status versendeter Dateien anzeigt. Den Frame mit einem Label "Gesendet: " und einem Button "Abbrechen" habe ich. Eigentlich habe ich auch schon die ProgressBar, aber wenn ich das Programm starte öffnet sich die Bar in einem zweiten Frame. Wenn ich alles in ein Frame packe, sieht man erst nichts, ausser dem DOS-Fenster. Erst wenn es abgearbeitet ist erscheind es, und zeigt an wieviel Dateien versendet wurden. Im Quellcode ist noch nichts mit eingebunden, es geht erst mal darum dass die Bar läuft. Und was muss ich machen, dass das ganze im Hintergrund läuft, d.h. rechts unten in der Taskleiste?
PS: ich weiss der Code ist ziemlich durcheinander, kommt vom vielen rumprobieren.
// Datei Balken.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Balken {
public static void main(String[] args) {
new UserFrame();
}
}
class UserFrame extends JFrame implements ActionListener {
int datnr;
private JProgressBar bar;
private JLabel status;
private void place(Component comp, int x, int y, int width, int height) {
comp.setBounds(x, y, width, height);
add(comp);
}
public UserFrame() {
getContentPane().setLayout(new FlowLayout());
// Titel festlegen
setTitle("Sende Dateien");
// Groesse festlegen
setSize(300, 100);
//setLayout(null);
// Hintergrundfarbe
setBackground(Color.lightGray);
final int max = 5;
final JProgressBar bar = new JProgressBar(0, max);
do {
// Anzeige in Veränderung
for (int i = 1; i <= max; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
final int j = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
bar.setValue(j);
}
});
}
datnr++;
} while (datnr < 50);
status = new JLabel("Gesendet: " + datnr);
status.setFont(new Font("Arial", Font.BOLD, 12));
status.setBackground(Color.lightGray);
getContentPane().add(status);
getContentPane().add(bar);
//JFrame frame = new JFrame();
//frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
//frame.pack();
//frame.show();
JButton btn = new JButton("Abbrechen");
btn.setFont(new Font("Arial", Font.BOLD, 11));
btn.setBackground(new Color(200, 200, 200));
btn.addActionListener(this);
getContentPane().add(btn);
// sichtbar
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("Abbrechen"))
System.exit(0);
}
}
Edit: Bitte code tags benutzen!