将 JFXButton 添加到 JFXTreeTableView 中
Adding JFXButton into a JFXTreeTableView
我曾尝试对此进行研究,但找不到任何示例。我发现的示例仅与普通 TableView 相关。我只能创建一个带有对象的 JFXTreeTableView 并列出字符串。任何帮助,将不胜感激!谢谢!
我需要将按钮或除字符串之外的任何其他对象放入 TreeTableView。
已更新以明确我希望它看起来像什么,解决方案如下。
参考这个 post,我试图将一个按钮(特别是 JFXButton)添加到一个 TreeTableView(特别是 JFXTreeTableView)中
不过,post只谈了TableView。分析代码后,我尝试修改代码以改为使用 TreeTableView 和 TreeTableCell。
使用 JFoenix 中的示例代码并按照下面的代码片段对其进行修改,我可以将 JFXButton 加载到 JFXTreeTableView 中。 (也适用于普通 Button。只需将 JFXButton 替换为 Button)
JFXTreeTableColumn<User, String> settingsColumn = new JFXTreeTableColumn<>("Others");
settingsColumn.setPrefWidth(100);
Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>> cellFactory
= //
new Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>>() {
@Override
public TreeTableCell call(final TreeTableColumn<User, String> param) {
final TreeTableCell<User, String> cell = new TreeTableCell<User, String>() {
final JFXButton btn = new JFXButton("Just Do it");
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
setText(null);
} else {
btn.setButtonType(JFXButton.ButtonType.RAISED);
btn.setOnAction(event -> {
//Button Action here
});
setGraphic(btn);
setText(null);
}
}
};
return cell;
}
};
settingsColumn.setCellFactory(cellFactory);
//Also remember to add the new column in
treeView.getColumns().setAll(deptColumn, ageColumn, empColumn, settingsColumn);
这是最终结果:
我曾尝试对此进行研究,但找不到任何示例。我发现的示例仅与普通 TableView 相关。我只能创建一个带有对象的 JFXTreeTableView 并列出字符串。任何帮助,将不胜感激!谢谢!
我需要将按钮或除字符串之外的任何其他对象放入 TreeTableView。
已更新以明确我希望它看起来像什么,解决方案如下。
参考这个 post,我试图将一个按钮(特别是 JFXButton)添加到一个 TreeTableView(特别是 JFXTreeTableView)中
不过,post只谈了TableView。分析代码后,我尝试修改代码以改为使用 TreeTableView 和 TreeTableCell。
使用 JFoenix 中的示例代码并按照下面的代码片段对其进行修改,我可以将 JFXButton 加载到 JFXTreeTableView 中。 (也适用于普通 Button。只需将 JFXButton 替换为 Button)
JFXTreeTableColumn<User, String> settingsColumn = new JFXTreeTableColumn<>("Others");
settingsColumn.setPrefWidth(100);
Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>> cellFactory
= //
new Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>>() {
@Override
public TreeTableCell call(final TreeTableColumn<User, String> param) {
final TreeTableCell<User, String> cell = new TreeTableCell<User, String>() {
final JFXButton btn = new JFXButton("Just Do it");
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
setText(null);
} else {
btn.setButtonType(JFXButton.ButtonType.RAISED);
btn.setOnAction(event -> {
//Button Action here
});
setGraphic(btn);
setText(null);
}
}
};
return cell;
}
};
settingsColumn.setCellFactory(cellFactory);
//Also remember to add the new column in
treeView.getColumns().setAll(deptColumn, ageColumn, empColumn, settingsColumn);
这是最终结果: