は私のコードは、JavaFXのツリービュー編集項目
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldTreeCell;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.*;
public class TreeViewSample extends Application {
public static void main(String[] args) {
launch(args);
}
TreeView<Object> tree;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Tree View Sample");
TreeItem<Object> rootItem = new TreeItem<Object>("Tree");
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
TreeItem<Object> item = new TreeItem<Object>("Item" + i);
rootItem.getChildren().add(item);
}
ContextMenu menu = new ContextMenu();
MenuItem renameItem = new MenuItem("Rename");
menu.getItems().add(renameItem);
tree = new TreeView<Object>(rootItem);
tree.setContextMenu(menu);
tree.setEditable(true);
tree.setCellFactory(new Callback<TreeView<Object>, TreeCell<Object>>() {
@Override
public TreeCell<Object> call(TreeView<Object> p) {
return new TextFieldTreeCell<Object>();
}
});
renameItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
tree.edit(tree.getSelectionModel().getSelectedItem());
}
});
tree.setOnEditCommit(new EventHandler<TreeView.EditEvent<Object>>() {
@Override
public void handle(TreeView.EditEvent<Object> event) {
System.out.println("Commit Value");
}
});
StackPane root = new StackPane();
root.getChildren().add(tree);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
であり、値をコミットし、
TreeView
とTreeItem
ジェネリック型は、私が持っているString
ある場合return new TextFieldTreeCell<String>(new DefaultStringConverter());
私はObject
を使用 使用し、私はどのLEA 文字列コンバータを使用する方法がわかりませんdsから、
Exception in thread "JavaFX Application Thread" java.lang.IllegalStateException:
Attempting to convert text input into Object, but provided StringConverter is null. Be sure to set a StringConverter in your cell factory.
この例外を緩和するにはどうすればよいですか?