相关疑难解决方法(0)

JavaFX定期后台任务

我尝试定期在JavaFX应用程序后台线程中运行,这会修改一些GUI属性.

我想我知道如何使用TaskService类,javafx.concurrent并且无法弄清楚如何在不使用Thread#sleep()方法的情况下运行这样的周期性任务.如果我可以使用一些Executor来自Executors制造方法(Executors.newSingleThreadScheduledExecutor())会很好

我试图Runnable每5秒运行一次,重启javafx.concurrent.Service但它会立即挂起,service.restart甚至service.getState()被调用.

所以最后我使用Executors.newSingleThreadScheduledExecutor(),它Runnable每隔5秒发射一次并使用以下命令Runnable运行另一个Runnable:

Platform.runLater(new Runnable() {
 //here i can modify GUI properties
}
Run Code Online (Sandbox Code Playgroud)

它看起来非常讨厌:(有没有更好的方法来使用TaskService类?

javafx-2

60
推荐指数
5
解决办法
5万
查看次数

使用线程发出数据库请求

我试图理解线程如何在java中工作.这是一个返回ResultSet的简单数据库请求.我正在使用JavaFx.

    package application;

import java.sql.ResultSet;
import java.sql.SQLException;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

public class Controller{
    @FXML
    private Button getCourseBtn;
    @FXML
    private TextField courseId;
    @FXML
    private Label courseCodeLbl;
    private ModelController mController;

    private void requestCourseName(){
        String courseName = "";
        Course c = new Course();
        c.setCCode(Integer.valueOf(courseId.getText()));
        mController = new ModelController(c);
        try {
            ResultSet rs = mController.<Course>get();
            if(rs.next()){
                courseCodeLbl.setText(rs.getString(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
//      return courseName;
    }

    public void getCourseNameOnClick(){
        try { …
Run Code Online (Sandbox Code Playgroud)

java mysql multithreading javafx

22
推荐指数
3
解决办法
1万
查看次数

标签 统计

java ×1

javafx ×1

javafx-2 ×1

multithreading ×1

mysql ×1