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

Javafx TableCell开始编辑时,显示旧值

Javafx TableCell是JavaFX框架中的一个组件,用于在表格中显示和编辑数据。TableCell可以显示各种类型的数据,并提供了编辑功能,使用户能够直接在表格中修改数据。

当TableCell开始编辑时,通常会显示该单元格中的旧值。这是为了让用户知道当前单元格中保存的是什么数据,并且可以在编辑过程中进行对比和参考。

Javafx TableCell的开始编辑事件可以通过实现TableCell的startEdit()方法来触发。在开始编辑时,可以通过调用getCellData()方法获取旧值,并将其显示在编辑器中。编辑器可以是一个文本框、下拉列表或其他适合的组件,用于用户输入新值。

以下是一个示例代码,展示了如何在Javafx TableCell开始编辑时显示旧值:

代码语言:txt
复制
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class TableCellExample extends Application {

    public static class Person {
        private final StringProperty name;

        public Person(String name) {
            this.name = new SimpleStringProperty(name);
        }

        public StringProperty nameProperty() {
            return name;
        }
    }

    @Override
    public void start(Stage primaryStage) {
        TableView<Person> tableView = new TableView<>();
        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
        nameColumn.setCellFactory(column -> new TableCell<Person, String>() {
            private TextField textField;

            @Override
            public void startEdit() {
                super.startEdit();
                if (textField == null) {
                    createTextField();
                }
                setText(null);
                setGraphic(textField);
                textField.setText(getString());
                textField.selectAll();
            }

            @Override
            public void cancelEdit() {
                super.cancelEdit();
                setText(getString());
                setGraphic(null);
            }

            @Override
            public void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                if (empty) {
                    setText(null);
                    setGraphic(null);
                } else {
                    if (isEditing()) {
                        if (textField != null) {
                            textField.setText(getString());
                        }
                        setText(null);
                        setGraphic(textField);
                    } else {
                        setText(getString());
                        setGraphic(null);
                    }
                }
            }

            private void createTextField() {
                textField = new TextField(getString());
                textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
                textField.setOnKeyPressed(event -> {
                    if (event.getCode().equals(KeyCode.ENTER)) {
                        commitEdit(textField.getText());
                    } else if (event.getCode().equals(KeyCode.ESCAPE)) {
                        cancelEdit();
                    }
                });
            }

            private String getString() {
                return getItem() == null ? "" : getItem();
            }
        });

        tableView.getColumns().add(nameColumn);
        tableView.getItems().add(new Person("John Doe"));

        primaryStage.setScene(new Scene(tableView));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上述示例中,我们创建了一个TableView,并添加了一个名为"Name"的TableColumn。为了在TableCell中显示和编辑数据,我们使用了一个TextField作为编辑器。当TableCell开始编辑时,我们调用startEdit()方法创建并显示TextField,并将旧值设置为TextField的初始值。当用户完成编辑时,我们调用commitEdit()方法提交新值。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。在实际开发中,你可以根据需要使用不同的编辑器,如下拉列表、日期选择器等,以满足不同类型数据的编辑需求。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云区块链(Blockchain):https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/um

请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估和决策。

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

相关·内容

  • JavaFX 11发行说明

    从JDK 11开始JavaFX模块与JDK分开提供。这些发行说明涵盖了独立的JavaFX 11发行版。...添加API以自定义Spinner控件的步骤重复计时 在JavaFX 11中修改步骤之前,必须在Spinner控件箭头按钮上按下鼠标的默认持续时间。...initialDelay:在下一个步骤之前必须在箭头按钮上按下鼠标的持续时间。默认现在为300毫秒。 repeatDelay:在第一个步骤之后,每个连续步骤必须按下鼠标的持续时间。...将默认GTK版本切换为3 现在,JavaFX将在存在gtk3库的Linux平台上使用GTK 3。在JavaFX 11之前,GTK 2库是默认的。这与JDK 11中AWT的默认相匹配。...:: getDefaultClassLoader中调用类的错误检查 FXML JDK-8129582 在Linux上显示RTL语言文本,控件显着减慢 图像 JDK-8195801 用MarlinFX

    6.6K60

    如何使用MapTool构建交互式地牢RPG 【Gaming】

    战争之雾是一个减法过程;它从100%的黑暗开始,随着玩家的进步,你可以使用雾工具栏中的“视图”菜单下的“战争迷雾”绘图工具来显示地图的新部分。...在战斗中,单击“开始”面板左上角的“下一步”按钮,进入下一个角色。只要你使用“下一步”按钮,回合计数器就会递增,帮助你追踪战斗持续了多少回合(当你拥有的法术或效果只持续特定回合数,这很有帮助)。...不过,图形健康栏的状态是基于百分比的,因此为了使健康条有意义,您的标记还必须具有表示其100%HP的。 转到“编辑”菜单并选择“活动属性”以全局向标记添加属性。...现在右键单击标记并选择“编辑”。在编辑标记窗口中,选择Statetab 并输入标记最大HP的(从玩家的字符表)。 若要创建新宏,请在“窗口”菜单中显示“活动”面板。...面板中将显示一个标记为“新建”的按钮。右键单击“新建”按钮并选择“编辑”。

    4.4K60

    JavaFX WebView概述,很强大,内置了类似Electron的功能

    WebView   使开发人员可以在其Java应用程序中实现以下功能: 从本地或远程URL呈现HTML内容 支持历史记录并提供前进和后退导航 重新加载内容 将效果应用于Web组件 编辑HTML内容 执行...媒体播放 表单控件(除外) 可编辑的内容 历史维护 支持,,和标签 SVG 网络插座 网络工作者...以下示例在成功完成加载更改阶段标题: 5.  访问文档模型 WebEngine对象为其网页创建和管理文档对象模型(DOM)。可以使用Java DOM Core类访问和修改模型。...7.将   JavaScript映射到Java对象: JavaScript使用显而易见的Java类表示:null变为Java null;布尔变为java.lang.Boolean; 字符串变成java.lang.String...这大致与上述JavaScript到Java的映射相反:Java String,Number或Boolean对象被转换为显而易见的JavaScript

    11.4K41

    React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发

    图片本文完整版:《React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发》 在日常开发中,特别是内部使用的后台系统,我们常常会需要用表格来展示数据,同时提供一些操作用于操作表格内的数据...,或者在没有任何排序时不显示: {headerGroups.map((headerGroup) => ( <tr {...headerGroup.getHeaderGroupProps...Material-UI 构建一个完整的表格组件,相信你已经上手 react-table 的用法,而这只是 react-table 功能的冰山一角,还有更多例如:动态展示列、分组展开、动画、拖拽、行内编辑...卡拉云直接注册即可开始使用,后台搭建完成后,还能一键分享给同事一起使用。...图片卡拉云是新一代低代码开发平台,与前端框架 Vue、React等相比,卡拉云的优势在于不用首先搭建开发环境,直接注册即可开始使用。

    16.9K01

    Using JavaFX UI Controls 18 超链接

    setOnAction 方法用来指定超链接点击的行为。类似于Button的 onAction动作。 例 18-1, 中行为仅限于打印字符串。但是在你的应用里面,你可能想用来实现更常见的任务。...链接本地内容 在图18-2展示应用中从本地目录中渲染图片 图 18-2 显示图片 展示例 18-2的源代码: 例 18-2利用超链接浏览图片 import javafx.application.Application...当用户点击一个超链接,超链接将显示被访问过。你可以通过调用setVisited 方法来刷新超链接。 例18-3 的代码片段即实现了该任务。...当点击其中一个超链接,对应的作为URL传给镶嵌的浏览器。...当编译运行此程序,程序窗体将显示如图18-4的状况。 图18-4 从Oracle 公司网址加载页面

    1.5K50

    Java一分钟之-JavaFX:构建桌面GUI应用

    JavaFX简介 JavaFX是Java的一个图形和多媒体处理库,它允许开发者设计、创建、测试、调试以及部署富客户端应用程序。...环境配置错误 问题描述:初学者在开始JavaFX项目,常遇到的问题之一是环境配置不正确,导致无法编译或运行JavaFX程序。 解决方案: 确保你的Java版本至少为Java 8或更高。...如果手动配置,请确保JavaFX库路径被正确添加到项目的类路径中。 2. 布局混乱 问题描述:在设计界面,元素布局常常不如预期,导致界面混乱。...代码示例:一个简单的JavaFX应用 下面是一个简单的JavaFX示例,展示了一个包含一个按钮和文本显示区域的应用,当点击按钮,文本会更新。...import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button;

    88120

    甲骨文严查Java授权 、 openJDK 注意避坑

    背景 外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。 甲骨文针对标准版Java(Java SE)有2种商业授权。...在这个背景下一些企业已开始用 OpenJDK 开源替代方案应对甲骨文的审计。但是OpenJDK与甲骨文标准版之间存在差异。今天咱们就来聊聊这些差异。...不能使用Java商标 这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。...解决方式也很简单,主要如下几种做法: 不要使用javafx.util这种OpenJDK里面没有的包; 下载javafx-sdk到服务器,编译javafx-sdk位置作为--module-path参数传入...; 在pom里面显式添加javafx依赖,这样在服务器上用mvn编译,会把它从maven中央仓库拉到本地打包到你的工程里。

    1.8K50

    JavaFX入门(五):使用CSS样式美化你的UI控件

    lbl-title { -fx-font-color: red; -fx-font-size: 20px; -fx-font-weight: bolder; } ID选择器由#开始进行定义...("lbl-title"); 最后说的是伪类选择器: 伪类的语法为:selector : pseudo-class {property: value} 比如我们设置当鼠标移动到Button上去背景色变为绿色...第一行第一列是ImageVeiw用于显示Logo图标,第二列是Label用于显示标题;第二行第一列是一个Label(用户名),第二行第二列和第三列是一个TextFiled用于输入用户名;第三行第一列是一个...; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.layout.GridPane...类型选择器设置所有Button的背景色*/ .button { -fx-background-color: darkturquoise; } /*hover伪类选择器设置鼠标移过Button的背景色

    10.1K50

    使用Java和图形库绘制一个简单的多维数据可视化图表

    当涉及到绘制多维数据可视化图表,Java提供了多种图形库供我们选择。下面将介绍一种基于JavaFX的图形库,通过它可以轻松地创建一个简单的多维数据可视化图表。...假设你已经熟悉Java开发环境的搭建和配置,我们将直接开始编写代码。...1、创建一个JavaFX应用程序的入口类: import javafx.application.Application; import javafx.stage.Stage; public class...// 创建一个场景并将折线图添加到其中 Scene scene = new Scene(lineChart, 800, 600); // 设置舞台并显示...最后,我们将数据系列添加到折线图上,并创建一个JavaFX场景将折线图添加到其中。 当你运行这个应用程序时,将会看到一个简单的折线图显示多维数据的变化趋势。

    18410

    JavaFX 11 发布,与 JDK 拆分后的首个正式大版

    由于 JavaFX 库被写成了 Java API,因此 JavaFX 应用程序代码可以调用各种 Java 库中的 API,例如 JavaFX 应用程序可以使用 Java API 库来访问本地系统功能并且连接到基于服务器中间件的应用程序...JavaFX 可以自定义程序外观,CSS 将外观和样式与业务逻辑实现进行了分离,因此开发人员可以专注于编码工作。值得注意的是,从 JDK 11 开始JavaFX 模块与 JDK 分开提供 。...在 JavaFX 11 中修改步骤之前,必须在 Spinner 控件箭头按钮上按下鼠标一段默认持续时间,JavaFX 11 中已添加两个新属性“initialDelay”和“repeatDelay”来配置此操作...此外公告还提供了关于以下一些常见问题的解决方案: OpenJDK 11 环境下,JavaFX 在 Ubuntu 18.04 上启用 Wayland 崩溃。...使用 jlink 创建的小 jdk 映像,Swing interop 失效。 详情查看 更新日志 。下载地址:https://openjfx.io/index.html

    2.3K40

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

    坑1:多线程中添加一个Tab标签直接报错 刚开始用多线程操作javafx控件就遇到了一个报错,向图形界面添加一个图形控件,报错提示“Not on FX application thread; currentThread...这就引出一个问题,对于如下代码,当多线程操控qq.readResCount = qq.readResCount + 1;这个全局变量的,它本身已经被Platform.runLater(() -> {...坑3:javafx控件取值和修改是否需要加锁 在网上搜索了很多说法,答案不一,那我们还是编写测试代码,来测试一下吧。...2 javafx控件修改过程测试 接下来再添加一行修改javafx控件文本框的代码:Quanjv.textarea.setText("test");,发现在100个线程操作下程序立马报错。...接下来对修改javafx的代码用Platform.runLater(() -> {});包裹起来,程序运行之后发现,100个线程下没有任何错误。

    35431

    甲骨文严查Java授权,换openJDK要避坑

    背景 外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。 甲骨文针对标准版Java(Java SE)有2种商业授权。...在这个背景下一些企业已开始用 OpenJDK 开源替代方案应对甲骨文的审计。但是OpenJDK与甲骨文标准版之间存在差异。今天咱们就来聊聊这些差异。...不能使用Java商标 这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。...解决方式也很简单,主要如下几种做法: 不要使用javafx.util这种OpenJDK里面没有的包; 下载javafx-sdk到服务器,编译javafx-sdk位置作为--module-path...参数传入; 在pom里面显式添加javafx依赖,这样在服务器上用mvn编译,会把它从maven中央仓库拉到本地打包到你的工程里。

    2.2K40

    IDEA与eclipse桌面配置基础

    eclipse的代码自动提示Window–>Preferences–>java–>editor–>content assist–>右侧框里auto activation triggers for java设置为...;requires javafx.controls;requires javafx.fxml;requires javafx.graphics;requires javafx.media;requires...javafx.swing;requires javafx.web;requires javafx-swt;}添加eclipse中创建dynamic web projectTomcat与eclipse整合...CodeGlance 显示代码缩略图插件当代码很多的时候,方便查看,很有用。...MetricsReloaded 代码复杂度检查插件Statistic 代码统计插件Translation 翻译插件Rainbow Brackets 彩虹括号插件修改全局配置,提升工作效率优化导包配置取消tab页单行显示双斜杠注释改成紧跟代码头取消匹配大小写显示行号和方法分割线创建文件

    38330

    利用Python爬取ZuluJDK最新发布版本并下载作为镜像分享站

    Vim8.2 With YCM:文本编辑器,用于写Python脚本。 PAW:网络API测试软件,可用curll配合grep命令代替。...我拿PAW去帮你分担压力~~~ PAW里显示,有4473项,显然是过去所有的构建版本都在这里了。 Zulu的服务器好大……4473个JDK/JRE……起码有1T的存储空间了。...=True, ext="tar.gz"), zulu_json)) [编辑] 其中: zulu_json:上文数据爬取得到的JSON(就是那个4000多对象的◡ ヽ(`Д´)ノ ┻━┻) 计算长度看看:...ZuluJDK_Mirror/" + jdk_version_code + "/" # 判断目录是否存在 has_dir(save_path) print("开始下载...] 使用Python命令运行: [开始下载和爬取] 最后下载下来的文件: [下载下来的文件] 使用Nginx做个目录映射: [目录映射] 当然,我们可以使用Cron定期缓冲最新版本的ZuluJDK,这里就不演示了

    2.6K122
    领券