我是新来的SpreadSheet功能ControlsFx Api。我想打开Dialog
在Javafx的SpreadsheetView
的Spreadsheetcell
的右键点击。任何帮助是极大的赞赏。JavaFx电子表格单元格右键单击打开对话框
回答
这是代码,你可以关闭标准的文本菜单和工具自己的处理程序与Dialog
,在这个例子中TextInputDialog
:
SpreadsheetView spreadsheetView = new SpreadsheetView();
//off the standard ContextMenu
spreadsheetView.setContextMenu(null);
//set own handler for right click with Dialog
spreadsheetView.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
@Override public void handle(ContextMenuEvent event) {
CellView cellView = (CellView) event.getTarget();
TextInputDialog dialog = new TextInputDialog(cellView.getText());
Optional<String> result = dialog.showAndWait();
if (result.isPresent()){
System.out.println(cellView.getText());
}
}
});
我不知道很好这个库,但它的作品好。 实例它的工作原理:
我的程序:
public class MainController extends Application {
public static void main(String[] args) {
launch(args);
}
@Override public void start(Stage primaryStage) throws Exception {
SpreadsheetView spreadsheetView = new SpreadsheetView();
//off the standard ContextMenu
spreadsheetView.setContextMenu(null);
//set own handler for right click with Dialog
spreadsheetView.setOnContextMenuRequested(new EventHandler<ContextMenuEvent>() {
@Override public void handle(ContextMenuEvent event) {
CellView cellView = (CellView) event.getTarget();
TextInputDialog dialog = new TextInputDialog(cellView.getText());
Optional<String> result = dialog.showAndWait();
if (result.isPresent()) {
System.out.println(cellView.getText());
}
}
});
HBox hBox = new HBox();
hBox.getChildren().add(spreadsheetView);
Scene scene = new Scene(hBox);
primaryStage.setScene(scene);
primaryStage.show();
}
}
感谢您的努力,但不知何故,它不适合我,你能否粘贴你的整个程序。 – DeepInJava
我添加了我的程序 – BadVegan
现在它适用于我。我的项目当时没有正确构建。抱歉! – DeepInJava
它使用上点击鼠标时,检查表视图并点击它的鼠标处理火灾FX新的对话然后接受输入并更新fx表视图。
table.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getClickCount() == 1) {
Call dialogue method of java fx
}
}
});
或者如果你想请右键单击您可以创建细胞
如
FirstNameCol.setCellFactory(new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
@Override
public TableCell<Person, String> call(TableColumn<Person, String> col) {
final TableCell<Person, String> cell = new TableCell<>();
cell.textProperty().bind(cell.itemProperty()); // in general might need to subclass TableCell and override updateItem(...) here
cell.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getButton == MouseButton.SECONDARY) {
// handle right click on cell...
// access cell data with cell.getItem();
// access row data with (Person)cell.getTableRow().getItem();
}
}
});
return cell ;
}
});
- 1. 从表格单元格按钮打开对话框
- 2. 双击DataGridView单元格打开表单
- 3. 如何在电子表格中打开XML电子表格“uncollapse”单元格?
- 4. 允许单击鼠标左键单击鼠标右键或按Ctrl键单击打开对话框
- 5. 打开模式对话框从内部表格单元
- 6. 打开xml sdk电子表格检查合并的单元格
- 7. 当用户点击Google电子表格单元格时如何显示表单或对话框
- 8. 单击单元格时弹出延迟打开弹出式对话框
- 9. 右对齐表格单元格位置
- 10. 在JavaFX中右键单击?
- 11. 防止从右键单击树视图单元格选择树单元格
- 12. Google电子表格单元格引用合并单元格
- 13. 在jqGrid中打开单元格中的模式对话框
- 14. 如何右键单击Java JList的单元格,然后像左键单击一样选择该单元格?
- 15. GWT电子表格单元格
- 16. 单击按钮时打开对话框。
- 17. jQuery对话框不能单击打开
- 18. 右键单击datagrid单元格以弹出复制菜单(ContextMenu)
- 19. 点击表格视图单元格打开地图与路线
- 20. 打开表格视图单元格的URL点击
- 21. C#DataGridView右键单击上下文菜单单击检索单元格值
- 22. 打开电子表格
- 23. 表格单元右对齐行内
- 24. Jtable中单元格的行为(单击鼠标右键)
- 25. 将Google电子表格单元格折叠为单个单元格
- 26. 合并单元格的CF电子表格边框
- 27. C#打开Xml SDK 2.0电子表格设置单元日期时间格式
- 28. Google电子表格使用脚本打开最后编辑的单元格
- 29. JavaFx DatePicker单色单元格
- 30. 在UserForm打开时单击单元格时填充TextBox与单元格引用
你好,你要直接显示对话框后点击右键? – BadVegan
@BadVegan,是的,我想单击鼠标右键后直接显示对话框。 – DeepInJava