Hi,
ich habe einen Server geschrieben (der mittlerweile ganz gut funktioniert :toll::applaus
. Jetzt möchte ich aber, dass eine ProgressBar beim Starten angezeigt und natürlich auch aktualisiert wird.
Das geschieht aber nicht. Es wird lediglich ganz zum Schluss einmal aktualisiert.
Hierzu ein paar Ausschnitte:
MODEL
[JAVA=241]
public boolean startServer(String serverName, int port, JTextArea textArea, PropertyChangeListener listener)
{
startServer = new StartServerTask(serverName, port, textArea);
startServer.addPropertyChangeListener(listener);
startServer.execute();
if(startServer.isCancelled()) return false;
else return true;
}
[/code]
[JAVA=416]
public class StartServerTask extends SwingWorker <Void, Void>
{
int port;
String serverName;
JTextArea textArea;
public StartServerTask(String serverName, int port, JTextArea textArea)
{
this.serverName = serverName;
this.port = port;
this.textArea = textArea;
}
protected Void doInBackground() throws Exception
{
setProgress(0);
server = new ChatServer(serverName, port, textArea);
setProgress(50);
server.start();
setProgress(100);
return null;
}
}
[/code]
CONTROLLER
[JAVA=265]
public void propertyChange(PropertyChangeEvent pce)
{
if(pce.getPropertyName() == "progress")
{
System.out.println(pce.getNewValue());
if((Integer) pce.getNewValue() == 100) view.setProgressBarValue(0);
else view.setProgressBarValue((Integer) pce.getNewValue());
}
}
[/code]
Was in der View passiert, dürfte ja nicht für das Problem verantwortlich sein!?
Warum reagiert der Listener nur beim letzten Event??? ???:L
EventDispatchThread!?
Noch ganz nebenbei: Gibts eine genauere Möglichkeit den Progress in der Worker-Klasse zu setzen, also einen Wert, der tatsächlich beschreibt, wie weit der Prozess ist und nicht, was ich mal so grob geschätzt hab?
Danke schonmal
Gruß
vR34k$H0w
ich habe einen Server geschrieben (der mittlerweile ganz gut funktioniert :toll::applaus
Das geschieht aber nicht. Es wird lediglich ganz zum Schluss einmal aktualisiert.
Hierzu ein paar Ausschnitte:
MODEL
[JAVA=241]
public boolean startServer(String serverName, int port, JTextArea textArea, PropertyChangeListener listener)
{
startServer = new StartServerTask(serverName, port, textArea);
startServer.addPropertyChangeListener(listener);
startServer.execute();
if(startServer.isCancelled()) return false;
else return true;
}
[/code]
[JAVA=416]
public class StartServerTask extends SwingWorker <Void, Void>
{
int port;
String serverName;
JTextArea textArea;
public StartServerTask(String serverName, int port, JTextArea textArea)
{
this.serverName = serverName;
this.port = port;
this.textArea = textArea;
}
protected Void doInBackground() throws Exception
{
setProgress(0);
server = new ChatServer(serverName, port, textArea);
setProgress(50);
server.start();
setProgress(100);
return null;
}
}
[/code]
CONTROLLER
[JAVA=265]
public void propertyChange(PropertyChangeEvent pce)
{
if(pce.getPropertyName() == "progress")
{
System.out.println(pce.getNewValue());
if((Integer) pce.getNewValue() == 100) view.setProgressBarValue(0);
else view.setProgressBarValue((Integer) pce.getNewValue());
}
}
[/code]
Was in der View passiert, dürfte ja nicht für das Problem verantwortlich sein!?
Warum reagiert der Listener nur beim letzten Event??? ???:L
EventDispatchThread!?
Noch ganz nebenbei: Gibts eine genauere Möglichkeit den Progress in der Worker-Klasse zu setzen, also einen Wert, der tatsächlich beschreibt, wie weit der Prozess ist und nicht, was ich mal so grob geschätzt hab?
Danke schonmal
Gruß
vR34k$H0w