java - JavaFX Listview - 双击禁用编辑?
问题描述
我的应用程序中有一个 esitable 列表视图,它应该只在按下外部按钮时切换到编辑模式。但是当我使列表视图可编辑时,当我在列表单元上双击时,也会触发编辑事件。当我双击它时,如何防止列表单元切换到编辑模式?
解决方案
使其ListView
不可编辑,并且仅将其设置为可编辑以在按下按钮时编辑选定的单元格。
另请注意,当未选择任何项目时,如何通过绑定禁用按钮。
查看 MCVE 中的编辑方法:
控制器.java
import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.cell.TextFieldListCell;
public class Controller {
@FXML
private ListView<String> list;
@FXML
private Button editSelectedItem;
public void initialize() {
list.setCellFactory(TextFieldListCell.forListView());
list.setEditable(false);
list.setItems(FXCollections.observableArrayList("a", "b", "c"));
editSelectedItem.disableProperty().bind(Bindings.createBooleanBinding(
() -> list.getSelectionModel().isEmpty(),
list.getSelectionModel().getSelectedItems()
));
}
@FXML
public void edit(final ActionEvent event) {
if (!list.getSelectionModel().isEmpty()) {
list.setEditable(true);
list.edit(list.getSelectionModel().getSelectedIndex());
list.setEditable(false);
}
}
}
主.java
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(final Stage primaryStage) throws Exception {
final Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(final String[] args) {
launch(args);
}
}
示例.fxml
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.layout.VBox?>
<VBox fx:controller="Controller"
xmlns:fx="http://javafx.com/fxml">
<ListView fx:id="list"/>
<Button onAction="#edit" text="Edit selected item" fx:id="editSelectedItem"/>
</VBox>
推荐阅读
- javascript - 使用 Javascript / React 中的格式规则对象的条件样式格式
- python - 根据字典列表中的特定字典键检测和删除重复项
- python - 根据标准在熊猫中显示列
- regex - 将短语中的每个单词与另一个单元格匹配
- ibm-cloud - 如何在 IBM 云中将对象存储从一个实例迁移到另一个实例?
- uml - 如何在活动图中表示可从多个泳道获得的动作?
- r - dplyr 从 A 列到 D 列选择列以及介于两者之间的所有内容?
- math - 带有两个位置参数的“clamp”是一种常见的约定吗?
- jquery - select2 下拉列表中的换行符
- pine-script - 无法发布我的第三个脚本 Pine-script 外部链接错误