刚学习了javafx,就开始应用。因为需要连接数据库,但连接的时候界面就像死掉了一样,所以考虑使用另一个线程去做数据库连接,但又因为连接完成以后需要更新界面上的元素,所以就不能使用Thread了,这里主要使用到javafx里面的Task和Service类。
先写一个类继承Service,实现中完成数据库连接操作
class MyService extends Service{
@Override
protected Task createTask() {
return new Task(){
@Override
protected Object call() throws Exception {
try {
ds = DataService.getInstance();
} catch (Exception e) {
e.printStackTrace();
ExceptionUtil.showException(e);
}
return null;
}};
}
}
调用:
private void initDatabase(){
InitService initService = new InitService();
//链接数据库失败
initService.setOnFailed(new EventHandler(){
@Override
public void handle(Event event) {
//TODO:数据库连接失败后操作
}});
//链接数据库成功
initService.setOnSucceeded(new EventHandler(){
@Override
public void handle(Event arg0) {
//TODO:数据库连接成功后操作
}});
initService.start();
}