我是JavaFx新手。我设计了一个table thorugh scenebuilder,其中第1列有一个按钮,第2列有一个复选框。单击按钮时,我希望获得checkbox属性的内容。但问题是,我的输出总是错误的。这是我的密码
模型JAVA
private boolean Active;
public boolean isActive() {
return Active;
}
public void setActive(boolean active) {
Active = active;
}
在我的控制器类中,我按照以下方式设计了initialize()方法
控制器。JAVA
@FXML
private TableView<Model> tableBuilding;
@FXML
private TableColumn<Model,Boolean> colActive;
@FXML
private TableColumn<Model,Model> colAction;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
//Containing the button
colAction.setCellFactory(col -> {
Button ShowButton = new Button("Show");
TableCell<Model, Model> cell = new TableCell<Model, Model>() {
@Override
//Updating with the number of row
public void updateItem(Model building, boolean empty) {
super.updateItem(building, empty);
if (empty) {
setGraphic(null);
} else {
setGraphic(ShowButton);
}
}
};
ShowButton.setOnAction(event -> {
TableRow row = cell.getTableRow();
Model building=(Model) row.getItem();
ObservableList<Model> data = tableBuilding.getItems();
for (Model item : data){
//check the boolean value of each item to determine checkbox state
System.out.println(item.isActive());
}
});
return cell ;
});
//Containing the checkbox
colActive.setCellValueFactory(new PropertyValueFactory<Model,Boolean>("Active"));
colActive.setCellFactory(tc -> new CheckBoxTableCell<>());
}
这里是系统。出来println(item.isActive())
总是将false作为输出重新展开。如何获取该复选框的实际属性?有人能帮我吗?
我相信你可以简化一下你的控制器。尝试将控制器代码更改为:
public class Controller {
@FXML
private TableView<Model> tableBuilding;
@FXML
private TableColumn<Model, Boolean> colActive;
@FXML
private TableColumn<Model, Model> colAction;
@FXML
public void initialize() {
// Sample List
ObservableList<Model> models = FXCollections.observableArrayList();
models.addAll(
new Model(),
new Model(),
new Model()
);
tableBuilding.setItems(models);
//Containing the button
colAction.setCellFactory(col -> {
Button ShowButton = new Button("Show");
TableCell<Model, Model> cell = new TableCell<>() {
@Override
//Updating with the number of row
public void updateItem(Model building, boolean empty) {
super.updateItem(building, empty);
if (empty) {
setGraphic(null);
} else {
setGraphic(ShowButton);
}
}
};
ShowButton.setOnAction(event -> {
TableRow row = cell.getTableRow();
Model building = (Model) row.getItem();
System.out.println(building.getActive());
});
return cell;
});
//Containing the checkbox
colActive.setCellValueFactory(new PropertyValueFactory<>("active"));
colActive.setCellFactory(col -> new CheckBoxTableCell<>());
}
}
具体来说,最后两行代码;您不需要指定自己的TableCell
,因为CheckBoxTableCell
可以自己处理模型的更新。
但是,需要更改
模型
类,以将活动
字段更新为真实属性;否则,TableView
无法正确更新它。控制器colActive中的行。setCellValueFactory(新属性ValueFactory
以下是定义属性的正确方法:
public class Model {
private SimpleBooleanProperty active = new SimpleBooleanProperty(true);
public boolean getActive() {
return active.get();
}
public SimpleBooleanProperty activeProperty() {
return active;
}
public void setActive(boolean active) {
this.active.set(active);
}
}
有趣的是,这似乎是遵循适当的Java编码实践很重要的情况之一。
Active
属性在这里也应该是小写的,而不是大写的。
我正在为我的soap服务编写一个JavaFX客户机,我的fxml页面必须包含一个完全可编辑的TableView,它由产品类实体组成。我的表现在由两个文本列和一个包含双值的文本列组成。我想添加一个选择列,在它的单元格中包含复选框项。使用集成演示应用程序,我扩展了一个使用复选框的单元格类: 然后,在fxml视图控制器类中,我为请求的TableColumn设置一个cellFactory: 我的问题是:
主要内容:创建复选框,复选框状态,示例复选框允许用户进行多项选择。例如,当订购披萨时,可以添加多个调味料。单选按钮或切换按钮用于单选或无选择。 创建复选框 我们可以使用中的构造函数来创建的对象。 创建不带标题的复选框,如下代码所示 - 要创建带有字符串标题的复选框,如下代码所示 - 创建复选框后,我们可以更改其文本并将其选中。 复选框状态 可以使用来表示三个状态: Yes No Not Applicable(不适用) “不适用”状态是
我目前正在使用 但这并没有返回选择模型中的一个选定项。
问题内容: 如何从JavaFX中的中获取所选项目? 我目前正在使用 但这并没有给我返回选择模型中的一个选择项。 问题答案: 好的,假设您有一个名为的数据模型类。这条路: 请注意,必须使用a 作为类型参数以避免转换: 要么 选择行后,您将返回一个实例。然后对该实例执行任何您想要的操作。
问题内容: 我正在Java中使用Selenium来测试Webapp中复选框的检查。这是代码: 我声明并将其分配给复选框所在的区域。 奇怪的是回报,因此 在复选框的HTML中,没有显示属性。但是,不是所有元素都有一个,这样的代码就可以工作吗? 问题答案: 如果您使用的是Webdriver,则正在寻找的项目已选中。 除非指定,否则通常在复选框呈现中实际上不会应用选中的属性。 所以您在Selenium
问题内容: 如何读取PHP中是否选中了复选框? 问题答案: 如果您的HTML页面如下所示: 提交表格后,您可以使用以下方法进行检查: 要么