gpt4 book ai didi

java - 如何填充 TableView,其中我可以在 javafx 中使用单选按钮

转载 作者:行者123 更新时间:2023-12-02 02:45:25 26 4
gpt4 key购买 nike

美好的一天,我正在尝试拥有一个 javafx tableView,借此我还可以拥有如下图所示的单选按钮 enter image description here

注意:单选按钮将由用户选择,而其他数据将从数据库中获取。下图是我迄今为止所能实现的enter image description here

借助以下函数。

private ObservableList<ObservableList> data;
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;

public void buildData() {
data = FXCollections.observableArrayList();
try {
conn = javaconnect.ConnectDb();
String SQL = "select id, questions from the_questions";
ResultSet rs = conn.createStatement().executeQuery(SQL);

for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
//We are using non property style for making dynamic table
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1));
col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});

questions.getColumns().addAll(col);
System.out.println("Column [" + i + "] ");
}
while (rs.next()) {
ObservableList<String> row = FXCollections.observableArrayList();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
row.add(rs.getString(i));
}
System.out.println("Row [1] added " + row);
data.add(row);

}

questions.setItems(data);
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error on Building Data");
}
}

非常感谢有关如何完成此操作的任何说明或帮助。谢谢

最佳答案

为什么不使用网格 Pane 呢?它有助于使用 CheckBoxTreeCell 类 https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm

无论如何,您可以为单选按钮创建自己的 TreeCellFactory。这将根据需要显示一个复选框或单选按钮。

public class TreeCellFactory implements Callback<TreeView<Object>,TreeCell<Object>>
{
@Override
public TreeCell call( TreeView param )
{
return new TreeCell<Object>()
{
private final CheckBox check = new CheckBox();
private final RadioButton radio = new RadioButton();
private Property<Boolean> prevRadioProp;
{
setContentDisplay( ContentDisplay.GRAPHIC_ONLY );
}

@Override
public void updateItem( Object item, boolean empty )
{
if ( prevRadioProp != null )
{
radio.selectedProperty().unbindBidirectional( prevRadioProp );
prevRadioProp = null;
}
check.selectedProperty().unbind();

if ( ! empty && item != null )
{
Property<Boolean> selectedProp = ....;

if ( getTreeItem().isLeaf() ) // display radio button
{
radio.setText( ... );
radio.selectedProperty().bindBidirectional( selectedProp );
prevRadioProp = selectedProp;
setGraphic( radio );
}
else // display checkbox
{
check.setText( ... );
check.selectedProperty().bind( selectedProp );
setGraphic( check );
}
}
else
{
setGraphic( null );
setText( null );
}
}
};
}
}

资源:

JavaFX: Making a Tree View with Radio Buttons

JavaFX: Radio Button + CheckBox TreeView

关于java - 如何填充 TableView,其中我可以在 javafx 中使用单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44643914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com