Javafx

2012-07-28 63 views
6

'da Görev sınıfının çağrı yönteminin dönüş değeri nasıl kullanılır? Veriyi veritabanından almak için javafx uygulamasında arka plan görevini çalıştırmak için Görev sınıfı kullanıyorum. veri nesnesini nasıl kullanılırJavafx

public class CustomTask extends Task<ObservableList<ObservableList>> { 

TableView tableview; 

ObservableList<ObservableList> data; 
public CustomTask(TableView tableview) { 
    this.tableview=tableview; 
} 

@Override 
protected ObservableList<ObservableList> call() throws Exception { 

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date = new Date(); 
    String SQL = "SELECT * from sell where Date='" + dateFormat.format(date) + "'"; 
    ResultSet rs = DBConnect.getResultSet(SQL); 

    data = DBConnect.generateListDateFromTable(rs, true); 
    return data; 
} 

}

.

cevap

12

Task'ın value property OR kaynağına bağlanın VEYA bir task.setOnSucceeded() olay işleyicisini sağlayın ve sağlanan olay işleyicisinde task.getValue() öğesini çağırın.

+2

Bunun nasıl yapılacağı ile ilgili bir örnek var mı? –

+0

sadece onSucceeded dönüş değeri veya onCanceled/onFailed yapar mı? Görevimi iptal edip geçerli değeri nasıl alacağımı, ancak tek yolun bağlayıcı olup olmadığından emin olmadığımı merak ediyorum. teşekkürler – Ewoks

+0

[setOnSucceeded] (https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#setOnScheduled-javafx.event.EventHandler-) değeri ile ilgisi yoktur Görev, görev başarılı olduğunda yürütülecek bir olay işleyicisidir. Eğer karşılık gelen değeri almak istiyorsanız, [task.getValue()] dosyasını çalıştırabilirsiniz (https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#getValue-- Olay işleyicisinin gövdesinde (Marc'ın bu soruya cevabı gibi). – jewelsea

20

Örnek 1 addEventHandler

MyResultObjectType result; 
CustomTask task = new CustomTask(); 
task.addEventHandler(WorkerStateEvent.WORKER_STATE_SUCCEEDED, 
     new EventHandler<WorkerStateEvent>() { 
    @Override 
    public void handle(WorkerStateEvent t) { 
     result = task.getValue(); 
    } 
}); 

Örnek 2 setOnSucceeded

MyResultObjectType result; 
CustomTask task = new CustomTask(); 
task.setOnSucceeded(new EventHandler<WorkerStateEvent>() { 
    @Override 
    public void handle(WorkerStateEvent t) { 
     result = task.getValue(); 
    } 
}); 

Örnek 3 addListener

task.valueProperty().addListener(new ChangeListener<Task>() { 
    @Override 
    public void changed(ObservableValue<? extends mytype> obs, 
         mytype oldValue, mytype newValue) { 
     if (newValue != null) { 
      System.out.println("Result = " + newValue); 
     } 
    } 
});