Я попытался установить Button
в столбце TableView
, но мне не удалось установить разные кнопки. Он показывает мне те же кнопки на всех столбцах.Невозможно установить разные значения для таблицы TableColumn в JavaFX
Идея состоит в том, что имя задано правильно, но моя проблема заключается в том, когда я устанавливаю cellValueFactory
. Это мой код:
for (int i = 0; i < listaPatchuriPerBaza.length; i++) {
if (listaPatchuriPerBaza[i].contains(".sql")) {
k = i;
pozitie = poz;
Patch pt = new Patch(listaPatchuriPerBaza[i], "Run" + " " + listaPatchuriPerBaza[i]);
listaPatchuri.add(pt);
masterData.add(pt);
patchColumn.setCellValueFactory(new PropertyValueFactory<Patch, String>("denumire"));
runColumn.setCellValueFactory(new PropertyValueFactory<Patch, String>("btnText"));
runColumn.setCellFactory(new Callback<TableColumn<Patch, String>, TableCell<Patch, String>>() {
@Override
public TableCell<Patch, String> call(TableColumn<Patch, String> param) {
Button btn = new Button(pt.getBtnText());
//Set up the Table
TableCell<Patch, String> cell = new TableCell<Patch, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
//actioneaza butonul de run
btn.setOnAction((ActionEvent event) -> {
btn.setDisable(true);
Tooltip tool = new Tooltip("Running");
setTooltip(tool);
System.out.println("ruleaza");
try {
SmbFile script = new SmbFile(path + pt.getDenumire(), userCred);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
SmbFile smbFromFile = new SmbFile(path + pt.getDenumire(), userCred);
SmbFile smbToFile = new SmbFile(path + "Aplicate/" + pt.getDenumire(), userCred);
smbFromFile.renameTo(smbToFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
setGraphic(btn);
}
}
};
return cell;
}
});
}
tableView.setItems(masterData);
}
Я не понимаю здесь цикл 'for': пытаетесь ли вы установить заводскую ячейку и заводскую ячейку один раз для каждой строки таблицы? –
@James_D Да, я хочу установить для каждого элемента из моего списка, но я не могу установить кнопку. Имена одобрены. – CobianuA
Это не имеет смысла. В столбце имеется только одна фабрика для значения и одна фабрика для ячейки. Таким образом, вы просто заменяете их на каждой итерации цикла. Это * фабрики *: т. Е. Они вызываются для создания объектов по мере необходимости. –