小编Ido*_*Gal的帖子

Javafx Task-从方法更新进度

在JavaFX应用程序中,我希望根据我在另一个类中实现的一些工作逻辑来更新状态栏。

我无法弄清楚如何结合我的意愿,将工作逻辑传递给方法(而不是将其写在任务中)并了解工作进度百分比。

这是带有Task的控制器的示例:

public class FXMLDocumentController implements Initializable {

    @FXML private Label label;    
    @FXML ProgressBar progressBar;

    @FXML
    private void handleButtonAction(ActionEvent event) {

        Service<Void> myService = new Service<Void>() {

            @Override
            protected Task<Void> createTask() {
                return new Task<Void>() {

                    @Override
                    protected Void call() throws Exception {
                        try {
                            DatabaseFunctionality.performWorkOnDb();

                            //updateProgress(1, 1);
                        } catch (InterruptedException ex) {
                            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
                        }

                        return null;
                    }
                }; 
            }            
        };

        progressBar.progressProperty().bind(myService.progressProperty());
        myService.restart();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }        
}
Run Code Online (Sandbox Code Playgroud)

这是帮助程序类: …

concurrency javafx progress-bar

4
推荐指数
1
解决办法
4672
查看次数

JavaFX ComboBox - 选择后显示的不同文本

我有一个ComboBox,我正在填充Sheet对象值.

我设置了一个Cell Factory,以便在下拉列表中显示工作表的名称.它工作正常(似乎是这样).

问题是在选择项目("单元格")后,框中显示的值不是列表中显示的值.

这是相关的代码部分:

excelFile = new ExcelFile(file);            
//ObservableList<String> sheets = FXCollections.observableArrayList(excelFile.getSheetsNames());
ObservableList<Sheet> sheets = FXCollections.observableArrayList(excelFile.getSheets());

sheetsBox.setItems(sheets);
sheetsBox.setDisable(false);            

sheetsBox.setCellFactory(new Callback<ListView<Sheet>, ListCell<Sheet>>() {
    @Override
    public ListCell<Sheet> call(ListView<Sheet> param) {
        return new ListCell<Sheet>() {
            @Override
            protected void updateItem(Sheet item, boolean empty) {
                super.updateItem(item, empty);

                if (empty || item == null) {
                    setText(null);
                    setGraphic(null);
                } else {
                    setText(item.getSheetName());
                }
            }        
        };
    }
});
Run Code Online (Sandbox Code Playgroud)

这是问题(视觉上): 在此输入图像描述 谢谢

java combobox javafx-8

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

标签 统计

combobox ×1

concurrency ×1

java ×1

javafx ×1

javafx-8 ×1

progress-bar ×1