Hallo Leute,
ich will mir nen ProgressFenster machen, was den Fortschritt meines Tools anzeigen soll. Da ich das Fenster mehrmals mit unterschiedlichen Eigenschaften brauche, setze ich die Variable einfach vorher auf null. Dadurch kann ich sie dann wieder neu instanziieren. Leider bleibt das Fenster beim 2. Start einfach weiß, obwohl jede weiße Hintergrundfarbe normalerweise nicht sichtbar ist. Auch die Texte und die ProgressBar sind dann nicht mehr sichtbar. Daher denke ich, dass es in irgendeiner Weise am Konstruktor liegt.
Hier mal der Code der Klasse:
So, hier dann noch die Funktionen, die aufgerufen werden, bzw aufrufen:
Das ist ein Ausschnitt des Aufrufes (davon gibt es mehrere):
Hinzukommt, dass auch die DefaultCloseAction nicht mehr funzt und auch der WindowListener erst nach Ende des Fensters beim 2. mal reagiert. Wie gesagt, beim ersten Start ist alles toll, der 2. hapert irgendwie.
Ich hoffe, ihr versteht wo mein Problem ist, anbei auch nochmal der Screenshot mit der Gegenüberstellung der richtigen und der falschen Darstellung.
Ich hoffe ihr könnt mir helfen =),
LG von mir
ich will mir nen ProgressFenster machen, was den Fortschritt meines Tools anzeigen soll. Da ich das Fenster mehrmals mit unterschiedlichen Eigenschaften brauche, setze ich die Variable einfach vorher auf null. Dadurch kann ich sie dann wieder neu instanziieren. Leider bleibt das Fenster beim 2. Start einfach weiß, obwohl jede weiße Hintergrundfarbe normalerweise nicht sichtbar ist. Auch die Texte und die ProgressBar sind dann nicht mehr sichtbar. Daher denke ich, dass es in irgendeiner Weise am Konstruktor liegt.
Hier mal der Code der Klasse:
Java:
package gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import logic.HelpClass;
public class JLadeBalken extends JFrame{
private static final long serialVersionUID = 1L;
private JProgressBar pb;
private JLabel ta;
private JPanel content;
private void close(){
System.out.println(this.getDefaultCloseOperation() == JFrame.DISPOSE_ON_CLOSE);
HelpClass.inProgress = false; //Statusvariable
HelpClass.repliAllow = false; //Statusvariable
}
public JLadeBalken(boolean loggedIn){
super("Replizierung läuft");
if(loggedIn){
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
else{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
this.setIconImage(Toolkit.getDefaultToolkit().getImage("files\\pictures\\vb_small.png"));
this.setLocation((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 - 100,
(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 - 60);
this.setSize(320, 340);
this.setLayout(new BorderLayout());
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event1) {
close();
}
});
JLabel l = new JLabel();
l.setBounds(10, 20, this.getWidth(), this.getHeight()-50);
l.setIcon(new ImageIcon("files\\pictures\\logo_ladevorgang.png"));
l.setOpaque(false);
content = new JPanel();
content.setLayout(null);
// content.setBackground(Color.WHITE);
ta = new JLabel();
pb = new JProgressBar();
pb.setStringPainted(true);
pb.setMaximum(100);
pb.setMinimum(0);
pb.setValue(0);
ta.setBounds(30, this.getHeight()-80, this.getWidth()-50, 30);
pb.setBounds(0, ta.getY()-50, this.getWidth()-17, 30);
content.add(pb);
content.add(ta);
content.add(l);
this.add(content, BorderLayout.CENTER);
l.setVisible(true);
pb.setVisible(true);
this.setAlwaysOnTop(true);
content.setVisible(true);
this.setVisible(true);
}
public void setText(String text, int vorgang){
vorgang--;
if(!text.equals("Initialisierung")&&!text.equals("Stop")){
text = "Repliziere "+text;
}
else if(text.equals("Stop")){
this.setVisible(false);
HelpClass.resetLB(); //statische Methode, folgt weiter unten
this.dispose();
}
if(!text.equals("Stop")){
pb.setValue(100/13*vorgang);
ta.setText("<html>"+text+"..."+"</html>");
if(!this.isVisible()){
this.setVisible(true);
}
}
content.repaint();
}
}
So, hier dann noch die Funktionen, die aufgerufen werden, bzw aufrufen:
Java:
//Funktion zum Setzen eines Statustextes und der Prozentanzeige
public static void setState(String s, int i){
if(lb == null){ //lb = LadeBalken in dieser Klasse
lb = new JLadeBalken(loggedIn);
inProgress = true;
loggedIn = true;
}
lb.setText(s, i);
}
//Funktion, die beim Beenden der Fortschrittsanzeige aufgerufen wird
public static void resetLB(){
lb = null;
repliAllow = true;
inProgress = false;
}
Das ist ein Ausschnitt des Aufrufes (davon gibt es mehrere):
Java:
if(HelpClass.repliAllow){
HelpClass.setState("Spielpaarungen", 13);
replicateTeamTournaments(db); //eigentliche Replizierungsfunktion
}
Log.writeLog("Replizierung abgeschlossen");
HelpClass.setState("Stop", -1);
HelpClass.repliAllow = true;
Hinzukommt, dass auch die DefaultCloseAction nicht mehr funzt und auch der WindowListener erst nach Ende des Fensters beim 2. mal reagiert. Wie gesagt, beim ersten Start ist alles toll, der 2. hapert irgendwie.
Ich hoffe, ihr versteht wo mein Problem ist, anbei auch nochmal der Screenshot mit der Gegenüberstellung der richtigen und der falschen Darstellung.
Ich hoffe ihr könnt mir helfen =),
LG von mir