首页
学习
活动
专区
工具
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.3K60

手拉手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顶部和底部区域允许可调整大小节点占用所有可用宽度。左边界区域和右边界区域占据顶部和底部边界之间可用垂直空间。默认情况下,所有边界区域尊重子节点首选宽度和高度。

13300

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:动作类,通常跟菜单类配合使用,点击某菜单触发对应操作。

37631

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

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

3.8K80

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

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

5.5K60

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

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

30010

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

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

3.3K80

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

最近学习 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 中输入年龄值。...请注意,这里没有对输入年龄值进行验证,确保输入是合法数字。在实际应用中,可能需要添加一些输入验证和错误处理逻辑。

20600

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

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

16610

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

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

13.7K20

【QT】QT模型视图

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

2.9K10

Java FX制作小游戏

我们将使用Java FX各种功能来创建游戏窗口、处理用户输入和显示游戏元素。...处理用户输入接下来,我们需要处理用户输入,以便在游戏中能够对玩家操作做出响应。我们将使用Java FX提供 EventHandler 接口来处理用户输入事件。...它提供了一系列核心类和API,用于创建和管理图形化用户界面(GUI),处理用户输入、事件处理、多媒体、动画等功能。...Control:Control是JavaFX控件类,用于构建用户界面上交互组件。常见控件包括Button、Label、TextField、ComboBox、ListView等。...Control类提供了丰富属性、样式和事件处理方法,可以根据需要自定义和扩展。Event:JavaFX提供了一套事件模型,用于处理用户输入、操作和其他类型事件。

15610

ios tableview 上加 textfiled

也就是说 键盘不会挡住输入框,我采用是tableviewcontroller    ,只有使用 TableviewController就很容易实现了我想要效果。    ...但是 后来在开发中遇到一个问题  :    因为使用是UItableviewContrller   当时我们设计就说 可不可以将下边按钮审核中 让他位置固定  ,不随tableview滚动而滚动...思路: uiviewcontroller+uitableview 让tableview  的当前编辑cell 始终处于  tableview 中间位置,这样的话就不会被挡住了。...发上代码: #pragma mark - 改变tableview位置(当将要编辑时候) -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField...{ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:textField.tag inSection:0]; //将要编辑

93450

CC++ Qt TableDelegate 自定义代理组件

TableDelegate 自定义代理组件主要作用是对原有表格进行调整,例如默认情况下Table中缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择效果...代理类作用是用来实现重写,例如我们TableView中默认是可编辑,这个可编辑组件是QT默认为我们重写了QLineEdit组件,也可理解为将组件嵌入到了表格中,实现了对表格编辑功能。...在自定义代理中QAbstractItemDelegate是所有代理类抽象基类,我们继承任何组件时都必须要包括如下4个函数: CreateEditor() 用于创建编辑模型数据组件,例如(QSpinBox...组件) SetEditorData() 从数据模型获取数据,以供Widget组件进行编辑 SetModelData() 将Widget组件上数据更新到数据模型 UpdateEditorGeometry...::~MainWindow() { delete ui; } 代理部件关联后,再次运行程序,会发现原来TableWidget组件中编辑框已经替换为了选择框等组件:

56820
领券