首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaFX:在按键事件时获取TableView中的目标行索引

JavaFX是一种用于构建富客户端应用程序的Java库。它提供了丰富的图形化用户界面(GUI)组件和功能,使开发人员能够创建具有吸引力和交互性的应用程序。

在JavaFX中,TableView是一种用于显示和编辑表格数据的控件。要在按键事件时获取TableView中的目标行索引,可以使用以下步骤:

  1. 首先,创建一个TableView并填充数据。例如,可以使用ObservableList和TableColumn来定义表格的列和数据。
代码语言:java
复制
TableView<Person> tableView = new TableView<>();
ObservableList<Person> data = FXCollections.observableArrayList(
        new Person("John", "Doe"),
        new Person("Jane", "Smith"),
        new Person("Bob", "Johnson")
);
TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));
TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));
tableView.getColumns().addAll(firstNameCol, lastNameCol);
tableView.setItems(data);
  1. 接下来,添加按键事件处理程序。可以使用tableView.setOnKeyPressed()方法来注册按键事件处理程序。
代码语言:java
复制
tableView.setOnKeyPressed(event -> {
    if (event.getCode() == KeyCode.ENTER) {
        int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
        System.out.println("Selected row index: " + selectedIndex);
    }
});

在这个例子中,我们注册了一个按键事件处理程序,当用户按下Enter键时,将获取选定行的索引并打印出来。

  1. 最后,将TableView添加到JavaFX的场景图中并显示出来。
代码语言:java
复制
Scene scene = new Scene(new StackPane(tableView), 400, 300);
primaryStage.setScene(scene);
primaryStage.show();

这样,当用户在TableView中选择一行并按下Enter键时,将打印出选定行的索引。

对于JavaFX的更多信息和详细介绍,可以参考腾讯云的JavaFX产品文档:JavaFX产品介绍

请注意,以上答案仅供参考,具体实现方式可能因应用场景和需求而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java FX制作小游戏

Java FX制作小游戏全栈学习Java,了解如何使用Java FX创建图形化界面是很重要一步。本篇文章将向您展示如何使用Java FX制作一个简单小游戏。...按照以下步骤:打开您IDE,并创建一个新Java项目。项目配置,选择Java FX作为项目的库和框架。创建一个主类 Main ,它将成为我们游戏入口点。...handle 方法处理按键按下和按键释放逻辑。...应用程序必须继承Application类,并实现其start方法,该方法初始化应用界面和设置应用主舞台。...事件事件源(Event Source)生成,并通过事件传播机制传递到事件目标(Event Target)进行处理。JavaFX事件可以是鼠标事件、键盘事件、焦点事件、动画事件等。

29010

JavaFX-TableView详解

先看看TableView中有些什么 IDEA,按住Ctrl然后点中TableView关键字会自动跟进到它定义地方,我们可以先看看这里面到底都有些什么东西。.../blog/2015/04/doc03_tableview/ 官方文档:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm TableView...TableViewObservableList集合 } }); 添加行删除也是同样操作,可以直接修改TableView维护集合来完成。...增加列,删除列 这就不仅仅要删除集合数据,还要从表格里面的Columns集合删除相应数据才可以,或许你还会在删除和增加中加入一定判断来保证操作正确性: table.getColumns()....add(tempCol); // 列表显示新增列 table.getColumns().remove(index); // 删除index位置列 监听列变化 你大可以选择向源文件那样

3.4K60

手拉手JavaFX场景

JAVAFXjdk1.8以上引入javafx类库JDK11+JAVAFX(eclipse)方式一方式二直接引入避免​另一种编写方式小知识点setHgrow或setVgrow、需要精确布局,应重写layoutChildren...()值摆放每一个子节点setHgrow(hbox,Priority.ALWAYS);javafx有4控件来表示多项数据ListView:列表TreeView:树TableView:表格TreeTableView...//获取可视范围宽度,高度 Rectangle2D rec2= screen.getVisualBounds(); System.out.println(rec1.getWidth...getCharacter获取字符、PRESSED按下pressed、TYPE打字,getCode获取代码,案例:import javafx.application.Application;import...放置顶部,底部,左侧,右侧和中心区域中节点默认对齐方式如下:● 顶部: Pos.TOP_LEFT● 底部: Pos.BOTTOM_LEFT● 左侧: Pos.TOP_LEFT● 右侧: Pos.TOP_RIGHT

15700

C++ Qt开发:数据库与TableView多组件联动

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,Qt我们可以通过拖拽方式将不同组件放到指定位置,实现图形化开发极大方便了开发效率,本章将重点介绍TableView...Qt,通常我们不会在TableView等组件中保存数据,一般会将这些数据存储至数据库或者是文件中保存,当使用时则动态在数据库调出来,以下案例将实现,当用户点击并选中TableView组件内某一...要实现联动涉及几个主要步骤:建立数据库连接、创建模型、设置TableView、捕捉TableView选中信号、查询并关联数据、更新LineEdit和ListView,首先我们UI界面绘制所需控件,...1.2 绑定事件 接着我们需要绑定TableView表格on_currentRowChanged()事件,当用户点击TableView表格某个属性则自动触发该函数,在此函数内我们完成对其他组件填充...TableView组件任意一是,其右侧ListView与底部LineEdit编辑框均会实现联动效果,如下图所示;

48810

iOS开发之表视图爱上CoreData

sectionDictionary;       3.sectionDictionary我们存放着两个键值对 header和items, header存放section名字,items存放每个... *整个数据存储一个数组  *数组每一个元素是一个自动,字典key是sectionHeader值,value是该section以数组形式存数据  *section每一对应着一个数组元素...,点击添加按钮首先得通过上下文获取我们实体对象,获取完实体对象后再给实体对象属性赋上相应值,最后调用上下文save方法来存储一下我们实体对象。...return YES; } ​    b.开启编辑功能以后我们就可以tableView对应方法来实现删除功能啦,当点击删除,我们需呀获取cell对应索引CoreData实体对象,然后通过上下文进行删除...中进行显示即可,tableView从person对象获取相应头像,然后显示即可,下面我们要加上索引

2.2K80

第68篇:javafx编写扫描器UI界面的线程死锁问题及坑点总结

坑1:多线程添加一个Tab标签直接报错 刚开始用多线程操作javafx控件就遇到了一个报错,向图形界面添加一个图形控件,报错提示“Not on FX application thread; currentThread...javafx控件安全,也能保证全局变量线程安全。...但是实测结果,经常在如下代码,出现报错问题,导致程序崩溃,所有扫描任务停止。 这是一个隐藏非常深线程安全bug,一天中会不定时出现几次,而且没办法复现,让我大伤脑筋。...后来我终于想明白了,一个TabPane是由多个标签组成,当你双击关闭其中一两个标签,tabPane所有索引id都变了,而另一个线程对于Tab标签for循环操作还在进行当中,而且还是按照原始索引去遍历...首先使用idea 2022新建项目,JDK选择大于等于jdk8版本即可,小于jdk8不支持javafx。 可以看到idea 2022版本,已经自动pom.xml文件添加了javafx库了。

32231

C++ Qt开发:TableView与TreeView组件联动

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,Qt我们可以通过拖拽方式将不同组件放到指定位置,实现图形化开发极大方便了开发效率,本章将重点介绍TableView...本章我们继续实现表格联动效果,当读者点击TableView或TreeView某一,我们让其实现自动跟随功能,且当用户修改行特定数据也让其动态跟随改变,首先绘制一个主界面如图,分别放置两个组件框...,可以通过连接这个信号来处理选择状态变化事件。...上述方法提供了管理选择项一些基本操作,包括清除选择、获取选中项索引、设置选择模式和策略,以及指定范围内进行选择操作。...如下代码我们通过model->rowCount()以及model->columnCount()获取到父UI界面tableView表格行列数,并通过ptr->setRowColumn将这些数据设置到了子对话框编辑框上面

35810

优雅处理网络数据,你真的会吗?不如看看这篇.

相信大家平时在用 App 时候, 往往有过这样体验,那就是加载网络数据等待时间过于漫长,滚动浏览伴随着卡顿,甚至没有网络情况下,整个应用处于不可用状态。...案例分享 现代工作生活,手机早已不是单纯通信工具了,它更像是一个集办公,娱乐,消费终端,潜移默化成为了我们生活一部分。...在这篇文章,你将会学到以下内容: 1.让你 App 可以无限滚动(infinite scrolling),并且滚动数据无缝加载 2.让你 App 数据滚动避免卡顿,实现平滑如丝滚动 3.异步存储...;最后用 UITableView 来显示返回数据, viewDidLoad 先请求网络数据来获取一些初始化数据,然后再利用 UITableView Prefetching API 来对数据进行预加载...如何避免滚动的卡顿 当你遇到滚动卡顿应用程序时,通常是由于任务长时间运行阻碍了 UI 主线程上更新,想让主线程有空来响应这类更新事件,第一步就是要将消耗时间任务交给子线程去执行,避免获取数据阻塞主线程

1.4K20

C++ Qt开发:StandardItemModel数据模型组件

组件上,代码如下所示; // 【选中单元格响应】:选择单元格变化时响应,通过构造函数绑定信号和槽函数实现触发 void MainWindow::on_currentChanged(const QModelIndex...iniModelFromStringList(fFileContent)函数具体实现细节,该函数用于从传入字符串列表 aFileContent 获取数据,并将数据初始化到 TableView 模型...这个函数主要完成了从字符串列表获取数据并初始化到 TableView 模型过程,包括表头设置、数据提取和状态处理。...// 【初始化填充TableView】:从传入StringList获取数据,并将数据初始化到TableView模型 void MainWindow::iniModelFromStringList(...如下所示函数用于 TableView 追加一数据,具体步骤如下: 创建一个 QList 容器 ItemList 用于存储一数据 QStandardItem。

31110

iOS学习——tableview带编辑功能cell键盘弹出遮挡和收起问题解决

,在这个过程我们需要回传什么信息,才能保证我们可以对我们控制器tableview进行控制。...2.2 自定义包含UITextFieldUITableViewCell   首先,我们点击编辑区域时候,获取到当前编辑区域相对屏幕位置,这样方便我们判断整个tableview是否需要上移以及需要上移多少比较合适...cell应用,首先,我们再主控制器定义几个属性来保存我们键盘弹出tableviewcontentOffset以及当前编辑cellframe,然后应用自定义cell设定我们两个回调block...@property (assign, nonatomic) CGRect editFrame; //保存键盘弹出前tableviewcontentOffset,方便我们键盘收起tableview...offSet); }]; } } 收起键盘操作,和弹出键盘相对,弹出键盘我们保存了弹出键盘之前tableviewcontentOffset偏移量,所以,收起键盘后,我们将

3.9K80

iOS学习——键盘弹出遮挡输入框问题解决方案

iOS或Android等移动端开发过程,经常遇到很多需要我们输入信息情况,例如登录要输入账号密码、查询要输入查询信息、注册或申请需要填写一些信息等都是通过我们键盘来进行输入iOS开发过程...,一般用于进行输入信息有两类:UITextField和UITextView,前者是单行输入文本框,后者是可滑动多行输入文本框,在这整个开发过程,我们需要控制键盘弹出和收起、输入结束时候获取输入信息...关于收起键盘,我们通常有两种做法如下: 一是通过我们键盘上【return/完成】按键点击事件来设置 二是设置点击空白处就收起键盘,这种方法现在比较普遍   这两种做法UITextField和UITextView...上实现在我之前随笔中有专门讲到过了,想了解小伙伴可以直接戳这里:ios学习——键盘收起 三 文本框内容获取   之前分析,我们知道,文本框在结束之后都会调用一个方法就是  textFieldDidEndEditing...  还是之前分析,我们知道键盘弹出和收起,系统都会发出对应通知,所以我们可以收到键盘弹出时候判断键盘位置和当前输入文本框位置,如果有遮挡,就将当前视图进行一个向上平移,收到键盘回收通知就平移到原先位置

3.5K60

iOS-TableView统一数据源代理

TableView 是 iOS 应用程序中非常通用组件,几乎每一个界面都有一个TableView,而我们许多代码都和TableView有关系,比如数据展示、更新TableView,一些响应选择事件等...,而这些大多都会通过其代理函数来实现,所以VC我们通常需要实现大量TableView代理函数,如下面这样 func tableView(_ tableView: UITableView, heightForHeaderInSection...即可 头部高度:header高度,可以是定值,也可以根据section来动态返回 尾部高度:footer高度,可以是定值,也可以根据section来动态返回 高:这里高可以通过data来获取,...这样利于做高度缓存,也可以通过indexPath来动态返回 配置数据源:这里可以获取已经初始化号cell和其对应数据源,我们只需要将其赋值给cell即可 点击事件 上面这些步骤也不是固定,这里有链式编程思想...而且第5步,我们就将cell与data对应起来了,后面会减少很多复杂if else判断,这不仅减少了代码量,同时也使实现逻辑更加清晰 Demo地址:https://github.com/cdcyd

91310

CC++ Qt 数据库与TableView多组件联动

Qt 数据库组件与TableView组件实现联动,以下案例实现了,当用户点击并选中TableView组件内某一,我们通过该行name字段查询并将查询结果关联到ListView组件内,同时将TableView...首先在UI界面绘制好需要控件,左侧放一个TableView组件,右侧是一个ListView组件,底部放三个LineEdit组件,界面如下: 我们还是需要创建两张表结构,表Student用于存储学生基本信息...表格on_currentRowChanged()事件,当用户点击TableView表格某个属性是则自动触发该函数,在此函数内我们完成对其他组件填充. 1.通过currentIndex方法获取到当前表所在行...2.通过当前行号查询表姓名,并带入StudentTimetable表查该表记录 3.循环获取该用户数据,并将timetable字段提取出来放入QStringList容器 4.将数据直接关联到ListView...,程序运行效果如下: 针对底部按钮处理事件相对来说较为简单,其实现原理就是调用了TableView默认提供一些函数而已,代码如下: // 刷新tableView的当前选择 // https://www.cnblogs.com

90420

CC++ Qt 数据库与TableView多组件联动

Qt 数据库组件与TableView组件实现联动,以下案例实现了,当用户点击并选中TableView组件内某一,我们通过该行name字段查询并将查询结果关联到ListView组件内,同时将TableView...首先在UI界面绘制好需要控件,左侧放一个TableView组件,右侧是一个ListView组件,底部放三个LineEdit组件,界面如下:图片我们还是需要创建两张表结构,表Student用于存储学生基本信息...表格on_currentRowChanged()事件,当用户点击TableView表格某个属性是则自动触发该函数,在此函数内我们完成对其他组件填充.1.通过currentIndex方法获取到当前表所在行...2.通过当前行号查询表姓名,并带入StudentTimetable表查该表记录3.循环获取该用户数据,并将timetable字段提取出来放入QStringList容器4.将数据直接关联到ListView...,程序运行效果如下:图片针对底部按钮处理事件相对来说较为简单,其实现原理就是调用了TableView默认提供一些函数而已,代码如下:// 刷新tableView的当前选择// https://www.cnblogs.com

1.4K30

CC++ Qt 数据库与SqlTableModel组件应用

SqlTableModel 组件可以将数据库特定字段动态显示TableView表格组件,通常设置QSqlTableModel类变量作为数据模型后就可以显示数据表内容,界面组件则通过QDataWidgetMapper...当用户点击TableView组件内某一记录,则触发MainWindow::on_currentRowChanged函数。...MainWindow::on_pushButton_delete_clicked() { QModelIndex curIndex=theSelection->currentIndex(); // 获取当前选择单元格模型索引...// 以Combox字段对目标 升序排列 void MainWindow::on_pushButton_ascending_clicked() { tabModel->setSort(ui-...如果需要修改或增加特定或记录我们只需要点击相应按钮,并在选中行直接编辑即可实现向数据库插入数据,而有时我们不希望通过原表上操作,而是通过新建窗体并在窗体完成增删改,此时就需要使用Dialog窗体并配合原生

91310
领券