Hallo zusammen
Ich nutze NetBeans und dessen Fähigkeit, Tasks zu erstellen, welche sich in die GUI einbinden. Wenn man da zB auf einen Button den Befehl "setAction" anwendet, dann kann man ja einen Backround-Thread erzeugen. Solange dieser Thread läuft, werden auch Rückmeldungen an die GUI abgegeben (durch setProgress und setMessage in doInBackround des Tasks).
Jetzt möchte ich aber einen eigenen Task erzeugen, der nicht durch eine Aktion auf der GUI, die ich durch setAction definiert habe, ausgelöst wird. Wie kann ich diesen Task in die GUI einbinden, so dass ich auch die Rückmeldungen über setProgress und setMessage abgeben kann? Dasselbe Problem trifft ja auch, wenn ich so einen automatisch von NetBeans erzeugten Task durch Task.execute() aufrufe. Solange ich nicht den Click auf den Button mache, gehen die setProgress und setMessage Methoden nicht.
Ich hab mal unten den Quellcode zum Task. Muss ich den jetzt bei der ResourceMap oder ActionMap der View anmelden?
Schon mal vielen Dank
Stefan
Ich nutze NetBeans und dessen Fähigkeit, Tasks zu erstellen, welche sich in die GUI einbinden. Wenn man da zB auf einen Button den Befehl "setAction" anwendet, dann kann man ja einen Backround-Thread erzeugen. Solange dieser Thread läuft, werden auch Rückmeldungen an die GUI abgegeben (durch setProgress und setMessage in doInBackround des Tasks).
Jetzt möchte ich aber einen eigenen Task erzeugen, der nicht durch eine Aktion auf der GUI, die ich durch setAction definiert habe, ausgelöst wird. Wie kann ich diesen Task in die GUI einbinden, so dass ich auch die Rückmeldungen über setProgress und setMessage abgeben kann? Dasselbe Problem trifft ja auch, wenn ich so einen automatisch von NetBeans erzeugten Task durch Task.execute() aufrufe. Solange ich nicht den Click auf den Button mache, gehen die setProgress und setMessage Methoden nicht.
Ich hab mal unten den Quellcode zum Task. Muss ich den jetzt bei der ResourceMap oder ActionMap der View anmelden?
Java:
public class ComputeProjectStatistics extends org.jdesktop.application.Task<Object, Object>
{
private View _view;
private Project _project;
public ComputeProjectStatistics(org.jdesktop.application.Application app, View view, Project project)
{
super(app);
this._view = view;
this._project = project;
}
@Override
protected Object doInBackground() throws Exception
{
// Hier kommen die setProgress und setMessage Aufrufe.
return null;
}
@Override
protected void succeeded(Object result)
{
_view.updateStatisicValues();
}
}
Schon mal vielen Dank
Stefan