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

JavaFX格式的可编辑TableView,仅数字输入

JavaFX是一种用于创建富客户端应用程序的Java库。它提供了丰富的图形界面组件和丰富的功能,使开发人员能够轻松构建跨平台的用户界面。

JavaFX中的TableView是一种表格视图组件,可以用于显示和编辑数据。可编辑TableView允许用户直接在表格中编辑数据,并提供了一些验证和限制输入的功能。

对于仅数字输入的可编辑TableView,可以通过以下步骤实现:

  1. 创建一个TableView对象,并定义表格的列数和列名。
  2. 创建一个ObservableList对象,用于存储表格中的数据。
  3. 为每一列定义一个TableColumn对象,并设置列的标题和数据类型。
  4. 使用setCellValueFactory方法将每一列与数据模型中的属性关联起来。
  5. 对于需要数字输入的列,可以使用setCellFactory方法设置一个自定义的TableCell工厂,用于创建只接受数字输入的单元格。
  6. 在自定义的TableCell工厂中,重写updateItem方法,限制输入为数字,并更新数据模型中的对应属性。
  7. 将ObservableList对象设置为TableView的数据源。

以下是一个示例代码:

代码语言:java
复制
import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.stage.Stage;

public class EditableTableViewExample extends Application {

    public static class Person {
        private final SimpleStringProperty name;
        private final SimpleIntegerProperty age;

        public Person(String name, int age) {
            this.name = new SimpleStringProperty(name);
            this.age = new SimpleIntegerProperty(age);
        }

        public String getName() {
            return name.get();
        }

        public void setName(String name) {
            this.name.set(name);
        }

        public int getAge() {
            return age.get();
        }

        public void setAge(int age) {
            this.age.set(age);
        }
    }

    @Override
    public void start(Stage stage) {
        TableView<Person> tableView = new TableView<>();
        ObservableList<Person> data = FXCollections.observableArrayList(
                new Person("John", 25),
                new Person("Jane", 30),
                new Person("Bob", 35)
        );

        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
        nameColumn.setCellFactory(TextFieldTableCell.forTableColumn());

        TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
        ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());
        ageColumn.setCellFactory(column -> new NumericEditingCell());

        tableView.getColumns().addAll(nameColumn, ageColumn);
        tableView.setItems(data);

        Scene scene = new Scene(tableView);
        stage.setScene(scene);
        stage.show();
    }

    public static class NumericEditingCell extends TextFieldTableCell<Person, Integer> {

        public NumericEditingCell() {
            super(new IntegerStringConverter());
        }

        @Override
        public void updateItem(Integer item, boolean empty) {
            super.updateItem(item, empty);

            if (empty || item == null) {
                setText(null);
            } else {
                setText(item.toString());
            }
        }

        @Override
        public void commitEdit(Integer newValue) {
            if (!isEditing() && !newValue.equals(getItem())) {
                TableView<Person> tableView = getTableView();
                if (tableView != null) {
                    TableColumn<Person, Integer> column = getTableColumn();
                    Person person = tableView.getSelectionModel().getSelectedItem();
                    if (person != null) {
                        person.setAge(newValue);
                    }
                }
            }
            super.commitEdit(newValue);
        }
    }

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

这个示例代码创建了一个可编辑的TableView,其中包含两列:Name和Age。Name列使用TextFieldTableCell允许用户编辑文本,Age列使用自定义的NumericEditingCell只允许数字输入。数据模型使用Person类表示,其中包含name和age属性。

对于腾讯云相关产品,可以考虑使用腾讯云的云服务器(ECS)来部署和运行JavaFX应用程序。腾讯云的云服务器提供了稳定可靠的计算资源,并且支持多种操作系统和应用程序的部署。您可以通过以下链接了解更多关于腾讯云云服务器的信息:腾讯云云服务器

请注意,以上答案仅供参考,具体的实现方式和产品选择可能因实际需求和环境而异。

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

相关·内容

JavaFX-TableView详解

前言 最近在着手一个学生管理系统编写,涉及到TableView使用,这前前后后也有了些经验和想法想要记录和分享一下(事实上我正在想要用html网页代替界面),更多是学习之用。...先看看TableView中有些什么 在IDEA中,按住Ctrl然后点中TableView关键字会自动跟进到它定义地方,我们可以先看看这里面到底都有些什么东西。.../blog/2015/04/doc03_tableview/ 官方文档:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm TableView...forTableColumn()); // 设置编辑响应函数 col.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Map...TableViewObservableList集合 } }); 添加行删除行也是同样操作,可以直接修改TableView维护集合来完成。

3.4K60
  • 手拉手JavaFX场景

    ()值摆放每一个子节点setHgrow(hbox,Priority.ALWAYS);javafx有4中控件来表示多项数据ListView:列表TreeView:树TableView:表格TreeTableView...button.setOnAction((e)->{ String a = textField.getText(); System.out.println("输入内容为...TextField文本字段、Cursor光标、imageView图像视图、addEventHandler添加事件处理程序、KeyEvent键盘事件、MouseEvent鼠标事件、BorderPane布局​编辑...BorderPane布局顶部,底部,左,右或中心区域中子节点。...BorderPane顶部和底部区域允许可调整大小节点占用所有可用宽度。左边界区域和右边界区域占据顶部和底部边界之间可用垂直空间。默认情况下,所有边界区域尊重子节点首选宽度和高度。

    17300

    PyQT模块、类、控件介绍

    PyQT主要类 QObject类 在类层次结构中是顶部类(Top Class),它是所有PyQt对象基类。 QPaintDevice类 所有绘制对象基类。...要么通过按向上/向下键增加/减少当前显示值,要么直接将值输入输入框中 QScrollBar窗口控件 提供了一个水平或垂直滚动条 QSlider控件 提供了一个垂直或水平滑动条 QComboBox...ComboBox 下拉组合框 FontComboBox 字体组合框 LineEdit 单行文本框 TextEdit 多行文本框 PlainTextEdit 纯文本编辑框 SpinBox 数字选择控件...QUrl:URL类 QTime:时间类 QDate:日期类 QMutex:线程锁类 QFile:文件类 QtGui模块常用类 QIcon:图标类,用于设置窗口图标 QFont:字体类,用于设置字体格式...QLabel:标签类 QPushButton:按钮类 QLineEdit:文本框控件类,支持单行输入 QAction:动作类,通常跟菜单类配合使用,点击某菜单触发对应操作。

    55331

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

    最近在项目中经常用到UITableView中cell中带有UITextField或UITextView情况,然后在这种场景下,当我们点击屏幕较下方cell进行编辑时,这时候键盘弹出来会出现遮挡待输入...言归正传,下面就说回到我们要解决问题,在UITableViewcell中,系统自带UITableViewCell格式没有自带UITextField或UITextView这种可以编辑区域,而这种类型...: )时候调用,开始编辑时候返回当前cell相对屏幕位置方便我们控制是否上移tableview,结束编辑时返回我们编辑内容方便进行记录。...  我们在对tableview上移进行调整时,我们需要知道当前编辑cell相对屏幕位置,然后才能判断是否需要上移tableview以及上移多少。...,首先,我们再主控制器中定义几个属性来保存我们键盘弹出时tableviewcontentOffset以及当前编辑cellframe,然后在应用自定义cell时设定我们两个回调block,当开始编辑

    3.9K80

    JavaFX——(第一篇:介绍篇)

    它即能处理输入也能渲染输出。 一个场景中单独元素叫节点。每一个节点都有一个ID,样式类和边界值。除了根结点外,每一个节点都有一个父结点并且有0到多个子节点。...它还可以有如下属性: 效果,例如模糊和阴影 透明度 变换参数 事件处理(例如:鼠标、键盘和输入) 特定应用状态 跟swing和AWT不同是,JavaFX场景图有布局、图像和媒体等还有例如矩形和文本等...它能在java应用中开发下面的特性: 从本地或远端URL渲染HTML内容 支持历史浏览并且提供回退和前进导航 重新加载内容 web组件应用效果 编辑HTML内容 执行JavaScript命令 处理事件...非常容易打包通过上面介绍几种方式。 跨平台。 与Java API相同API格式。 如何创建JavaFX应用 下载最新版本JDk并且支持JavaFX。 安装并且配置,按照向导创建一个简单应用。...注意: JavaFX场景构建器没有依赖任何特定IDE。您可以运行它作为一个独立工具来创建您UI布局和编辑结果FXML文件使用一个文本编辑器,你选择。

    5.9K60

    VBA技巧:将工作表中文本框里数字转化为日期格式输入到工作表单元格

    标签:VBA,ActiveX控件 如下图1所示,工作表中有一个名为“TextBox1”文本框,要将其中输入数字放置到工作表单元格B8中并转换成日期格式。...Sheet3") .Cells(8, 2) = Format(.OLEObjects("TextBox1").Object.Value, "yyyy-mm-dd") End With 反之,如果要想工作表中文本框显示单元格中日期...在实际应用开发中,万一碰到这种情况,就可以有现成代码参考了。...看着有点简单,但主要是理解工作表中ActiveX控件是如何进行引用,文本框控件中值是如何转换格式,既可以熟悉ActiveX控件在VBA中属性使用,也增加了处理类似情形经验。

    43010

    C++ Qt开发:QItemDelegate自定义代理组件

    此处我们将实现对QTableView表格组件自定义代理功能,例如默认情况下表格中缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择效果...1.1 概述代理类代理类作用是用来实现组件重写,例如TableView中默认是可编辑,之所以可编辑是因为Qt默认为我们重写了QLineEdit编辑框实现,也可理解为将组件嵌入到了表格中,实现了对表格编辑功能...并实现这些函数,读者创建一个定制项委托,用于控制数据项在视图中外观和交互行为。...Class 输入自定义类名称QWintSpinDelegate,然后基类继承QStyledItemDelegate/QMainWindow,然后下一步结束向导,同理其他功能创建也如此。...接着就是对该接口重写了,此处重写代码spindelegate.cpp如下所示,其关键位置解释参考注释部分。

    83111

    窥探Swift之协议(Protocol)和委托代理(Delegate)回调使用

    数据源格式是一个数组,而数组中存放是多个字典,每个字典有两个键值对,一个键值对存储要显示图片文件名,另一个键值对则存储美女名字。为了使该数据存储结构,请看下方结构图。 ?     ...要做事情就是输入美女名字,点击返回后通过自己定义委托回调,把你输入值回调到上一个页面(TableView)中去,并修改相应Cell上名字。...接着是girlNameTextField就是关联输入框了,负责接收用户输入,把值交付给委托代理者。         ...在viewWillDisappear方法中,会将用户输入值交付给委托代理者fetchGirlName方法。...也就是点击TableView每一行,然后跳转到编辑页面对其当前点击cell进行编辑编辑后返回通过代理进行值修改。

    3.5K80

    图片内容管家 (把文字隐藏到图片里)

    最近学习 javafx 自己编写了一款软件  (网上虽然也有类似功能软件,但是界面不够美观,功能比较单一,或者操作比较复杂) 软件官方网址:http://pcm.chujianyun.com 注:...下载地址) 功能简介: 一款颇具创意javafx应用软件。 可以在图片放入和编辑: 电影下载链接、电影番号、学习资料网址、告白情诗、记录心情笔记等。 支持链接一键在浏览器打开,支持内容导出。...可以点击软件主界面右侧打开 可以使用ctrl+o快捷键 如果有密码会有密码输入提示 2 复制链接 迅雷响应 如果是迅雷专用链接 或者是ftp 电影下载等迅雷响应链接...4 添加内容 方便贴心 输入文本后,按下回车键或者右侧“新建内容”按钮, 即可添加内容。 5 双击编辑 简单方便 双击对应内容即可编辑。...编辑完成后, 按下回车键方才完成修改。 6 删除功能 一键删除 点击每行对应后面的 删除按钮即可删除该项。 也可以选中多个后,一键删除选中。

    3.4K20

    C++ Qt开发:SqlTableModel映射组件应用

    在接下来章节中,我们将学习如何配置 QSqlTableModel、与数据库进行交互、实现数据动态显示和编辑,首先读者应绘制好UI界面,本次案例界面稍显复杂,读者自行完成如下案例绘制;以下是 QSqlTableModel...,用户可以通过表格展示方式查看和编辑 "Student" 表格中数据。...ui->lineEdit->text() 获取用户在 QLineEdit 中输入文本,作为新年龄值,并通过 aRec.setValue("age", ...)...tabModel->submitAll();上述代码实现了一个简单批量修改操作,将表格中所有记录 "Uage" 字段值设置为用户在 QLineEdit 中输入年龄值。...请注意,这里没有对输入年龄值进行验证,确保输入是合法数字。在实际应用中,可能需要添加一些输入验证和错误处理逻辑。

    26300

    C++ Qt开发:SqlTableModel映射组件应用

    在接下来章节中,我们将学习如何配置 QSqlTableModel、与数据库进行交互、实现数据动态显示和编辑,首先读者应绘制好UI界面,本次案例界面稍显复杂,读者自行完成如下案例绘制; 以下是 QSqlTableModel...,用户可以通过表格展示方式查看和编辑 "Student" 表格中数据。...ui->lineEdit->text() 获取用户在 QLineEdit 中输入文本,作为新年龄值,并通过 aRec.setValue("age", ...)...tabModel->submitAll(); 上述代码实现了一个简单批量修改操作,将表格中所有记录 "Uage" 字段值设置为用户在 QLineEdit 中输入年龄值。...请注意,这里没有对输入年龄值进行验证,确保输入是合法数字。在实际应用中,可能需要添加一些输入验证和错误处理逻辑。

    22810

    QTableView基本用法讲解,Qt表格控件使用方法

    :   检索处方项目成功后,把该项目显示到QTableView里,把需要编辑数量字段提供给用户输入,用户输入确认后,该项目留在列表中,然后开始下一项目检索录入。   ...检索成功后,把检索结果插入到临时表中,把需要编辑字段提供给用户。...tbList->setModel(NULL); //清除原先数据集 tbList->setModel(tb1); //刷新显示 复制代码   程序中需要提供编辑输入时候 QModelIndexmdidx...=m_ui->tbList->model()->index(row,column); //获得需要编辑单元格位置 m_ui->tbList->setFocus(); //把输入焦点交给tbList...如果需要对用户输入做限制,比如只能在指定字段输入指定数据类型,可以通过QItemDelegate来实现。

    15.4K20

    Java一分钟之-JavaFX控件:Button, TextField, Label等

    控件介绍 Button - 用户可以通过点击按钮执行特定操作。例如,确认对话框或触发一个动作。 TextField - 提供一个单行文本输入框,用户可以在其中输入文本。通常用于收集用户数据。...Label - 用于显示静态文本信息,不可编辑。常用来说明其他控件用途或者提供反馈信息。 常见问题与易错点 1. 样式问题 问题描述:控件样式不符合预期,例如字体、颜色或大小。...primaryStage.setScene(scene); primaryStage.show(); } } 这个例子展示了如何使用Button、TextField和Label创建一个简单用户输入和反馈界面...通过调整布局和事件处理,你可以构建出更复杂交互逻辑。 总结 理解并熟练使用JavaFX基础控件是创建功能丰富、用户友好GUI关键。...通过实践,你可以更好地掌握这些控件用法,避免常见问题,提升你JavaFX应用开发技能。

    43410

    Avalonia:可信创.NET 跨平台UI,让JAVA失业者转.NET信创开发!

    4.2 选择IDE 虽然你可以使用任何文本编辑器编写Avalonia应用,但我强烈推荐使用专业IDE以提高开发效率。...ViewModel:View和Model之间中间层,处理View业务逻辑,并将Model数据转换为View可以easily使用格式。...15.6 Dock Dock是一个用于Avalonia高度定制停靠布局系统。它允许你创建类似于Visual Studio那样拖拽、可调整大小窗口布局。...15.10 AvaloniaEdit AvaloniaEdit是一个基于Avalonia高性能文本编辑器控件。它支持语法高亮、代码折叠等高级功能,非常适合用于开发代码编辑器或富文本编辑器。...16.4 AI集成 随着AI技术普及,Avalonia可能会提供更多工具和控件来支持AI功能集成,如语音识别、图像处理等。 16.5 访问性改进 提升应用程序访问性是一个持续过程。

    1.6K20

    【QT】QT模型视图

    MVC(Model-View-Controller)包括了3个组件:模型(model)是应用对象,用来表示数据;视图(View)是模型用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入反应方式...委托(Delegate)用于定制数据渲染和编辑方式。...当标准模型还无法满足需要时,子类化QAbstractItemModel、QAbstractListModel或QAbstractTableModel来创建自定义模型。...常见3种模型为列表模型、表格模型、树模型,如下图所示: 为确保数据表示与数据获取相分离,Qt引入了模型索引概念,输入和委托均可通过模型索引来请求数据并显示。...只有模型需要知道怎样获取数据,被模型管理数据类型可以被广泛定义。模型索引包含一个指针,指向创建他们模型,使用多个模型时避免混淆。

    3K20
    领券