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

将TextField文本设置为TableView列中的数据

,可以通过以下步骤实现:

  1. 首先,确保你已经创建了一个TableView,并且已经定义了列(Column)。
  2. 在TableView的列定义中,使用CellFactory来自定义单元格的显示方式。可以使用Lambda表达式或者匿名内部类来实现。
  3. 在CellFactory中,创建一个TextField,并将其与单元格绑定。
  4. 为TextField添加一个事件监听器,监听文本变化事件。
  5. 在事件监听器中,获取TextField的文本,并将其设置为TableView列中对应行的数据。

下面是一个示例代码,演示了如何将TextField文本设置为TableView列中的数据:

代码语言:txt
复制
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    private TableView<Person> tableView;
    private ObservableList<Person> data;

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

    @Override
    public void start(Stage primaryStage) {
        // 创建数据
        data = FXCollections.observableArrayList(
                new Person("John", "Doe"),
                new Person("Jane", "Smith"),
                new Person("Bob", "Johnson")
        );

        // 创建TableView和列
        tableView = new TableView<>();
        TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
        TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");

        // 设置列的数据源
        firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));
        lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));

        // 设置列的CellFactory
        firstNameCol.setCellFactory(column -> {
            return new TableCell<Person, String>() {
                private TextField textField;

                @Override
                protected void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty);

                    if (empty) {
                        setGraphic(null);
                    } else {
                        if (isEditing()) {
                            if (textField != null) {
                                textField.setText(getString());
                            }
                            setGraphic(textField);
                            setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
                        } else {
                            setText(getString());
                            setContentDisplay(ContentDisplay.TEXT_ONLY);
                        }
                    }
                }

                @Override
                public void startEdit() {
                    super.startEdit();

                    if (textField == null) {
                        createTextField();
                    }

                    setText(null);
                    setGraphic(textField);
                    textField.selectAll();
                }

                @Override
                public void cancelEdit() {
                    super.cancelEdit();

                    setText(getString());
                    setContentDisplay(ContentDisplay.TEXT_ONLY);
                }

                @Override
                public void commitEdit(String newValue) {
                    super.commitEdit(newValue);

                    Person person = getTableView().getItems().get(getIndex());
                    person.setFirstName(newValue);
                }

                private void createTextField() {
                    textField = new TextField(getString());
                    textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
                    textField.focusedProperty().addListener((observable, oldValue, newValue) -> {
                        if (!newValue) {
                            commitEdit(textField.getText());
                        }
                    });
                }

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

        // 将列添加到TableView中
        tableView.getColumns().addAll(firstNameCol, lastNameCol);

        // 将数据添加到TableView中
        tableView.setItems(data);

        // 创建一个垂直布局,并将TableView添加到其中
        VBox vbox = new VBox(tableView);

        // 创建一个场景,并将布局添加到场景中
        Scene scene = new Scene(vbox);

        // 设置舞台的场景,并显示舞台
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static class Person {
        private final SimpleStringProperty firstName;
        private final SimpleStringProperty lastName;

        public Person(String firstName, String lastName) {
            this.firstName = new SimpleStringProperty(firstName);
            this.lastName = new SimpleStringProperty(lastName);
        }

        public String getFirstName() {
            return firstName.get();
        }

        public void setFirstName(String firstName) {
            this.firstName.set(firstName);
        }

        public String getLastName() {
            return lastName.get();
        }

        public void setLastName(String lastName) {
            this.lastName.set(lastName);
        }
    }
}

在这个示例中,我们创建了一个包含两列的TableView,分别是"First Name"和"Last Name"。我们将"First Name"列的单元格定义为可编辑的TextField,并将其与对应行的数据绑定。当用户编辑TextField中的文本时,会自动更新对应行的数据。

这个示例中使用了JavaFX框架来实现,JavaFX是一种用于构建富客户端应用程序的开发工具包。在实际开发中,你可以根据自己的需求选择适合的开发框架和技术栈。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。你可以通过以下链接了解更多关于这些产品的信息:

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

相关·内容

Using JavaFX UI Controls 12 Table View

很多JavaFX SDK API种的类为在表格表单中呈现数据。在JavaFX 应用中对创建表格最重要的是TableView, TableColumn和TableCell这三个类。...图12-3 带有嵌套列的表格 尽管表格已经添加到应用中,但是因为表格中没有数据,标准的标题“No content in table”(表格内容为空)将呈现在表格中。...下一步就是将这些数据和表格的列之间建立联系。你可以像例12-5中那样通过对每个数据元素的属性定义来实现。...图 12-6新添加的实体 列数据排序 TableView类提供了列中数据的排序。用户可以通过点击列头来对数据进行排序。第一次点击将进行升序排列,第二次点击将进行降序排列。第三次点击不排列。...将Map数据添加到表格中 从JavaFX SDK 2.2开始,你可以往表格中添加Map类型的数据。

11.4K20
  • 内容分栏设置:如何将PPT文本框中的文字设置分栏

    当提到将PPT中的文字进行分栏时,大家都是比较陌生的,通常情况下,我们都是在word中将文字内容进行分栏的,并且实现文本内容进行排序排版是很简单的,但是如果是在PPT中,我们想对文本内容实现分栏效果,应该如何进行操作呢...https://www.pptbest.com/jiaocheng/2019-09-27/268.html 首先,进入到需要拆分为幻灯片中文本框的文本内容的文档中; 1.jpg 进入文档后,我们编辑文本框中的文本内容...,然后选择文本框并单击鼠标右键弹出右键菜单; 2.jpg 在弹出的菜单栏中选择“设置形状格式”以打开“设置形状格式”弹出窗口,然后在弹出窗口顶部的菜单栏中选择“文本选项”菜单; 3.jpg 接下来...,在“文本选项”菜单下,选择“文本框”选项卡,并在“打开设置”选项底部找到“分栏”按钮; 4.jpg 我们点击“分栏”按钮打开“栏”选项弹出窗口。...在弹出的窗口中,我们将“数量”设置成自己需要的,在设置好分栏的“间距”,最后点击“确定”即可; 5.jpg 在确认并返回到ppt文档后,我们可以看到所选文本框中的文本内容就自动按设置进行了分栏;

    10.2K10

    根据数据源字段动态设置报表中的列数量以及列宽度

    在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。...本文就讲解一下ActiveReports中该功能的实现方法。 第一步:设计包含所有列的报表模板,将数据源中的所有列先放置到报表设计界面,并设置你需要的列宽,最终界面如下: ?...第二步:在报表的后台代码中添加一个Columns的属性,用于接收用户选择的列,同时,在报表的ReportStart事件中添加以下代码: /// /// 用户选择的列名称...if (tmp == null) { // 设置需要显示的第一列坐标 headers[c...源码下载: 动态设置报表中的列数量以及列宽度

    4.9K100

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

    ,在这个过程中我们需要回传什么信息,才能保证我们的可以对我们控制器中的tableview进行控制。...field中定位了,键盘也已经弹出来了,接下来可以进行输入了 在输入信息过程中,当前文本内容改变就会调用,textField:shouldChangeCharactersInRange:replacementString...@property (assign, nonatomic) CGRect editFrame; //保存键盘弹出前tableview的contentOffset,方便我们在键盘收起时将tableview...那么,首先我们需要对对应的通知进行注册,然后设置在监听到对应的通知之后应该采取的行动和措施。...offSet); }]; } } 收起键盘的操作,和弹出键盘相对,弹出键盘时我们保存了弹出键盘之前tableview的contentOffset的偏移量,所以,在收起键盘后,我们将

    3.9K80

    iOS14开发-UIView

    子 View 的顺序和子 View 返回的数组中的位置有关(storyboard 中左侧的树形结构图中的先后顺序)。...UILabel、UITextField、UIButton UILabel 显示静态文本。 文字换行 使用 storyboard:设置Lines为 0,然后在Text中用option+回车换行。...UIPickerView 选择器控件 数据源(DataSource) 代理(Delegate) 可以通过代码和拽线的方式设置数据源和代理。...数据联动 在某一列滚动的时候,重新设置联动列的显示数据,然后进行刷新操作。...直接在 storyboard 中布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器中实现相应的方法。 适用于基本不需要动态修改、布局固定的页面,如个人中心、设置等。

    11.9K10

    java数据导出为excel表格_将数据库表中数据导出到文本文件

    公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两张表都导入数据库中...,建表的数据如下: 其中字段类型被存放到了另一个表中,根据字段的code从另一表去取字段类型: 然后通过java程序的方式,从数据库中取出数据自动生成建表语句,生成的语句效果是这样的:...).getFiledname().length()==0){ //一个新表开始,重新创建一个表,因为数据库存储的数据,每一个表结束会另起一行,数据中只包含表名,没有数据名, System.out.println...,针对其他不同的数据规则以下代码一般不适用,由于本次任务字段类型被放到了另一张表中,所以需要使用data表中的code去匹配对应的type表中的type类型,以此来确定字段类型 String code...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.2K40

    原 快速创建 HTML5 Canvas 电

    的样式 style 属性 document.body.appendChild(view); //将底层 div 添加进 body 中 style.left = '0';//HT 默认将组件都定义为决定定位...tableP,表格组件中的数组内容 arr,cb 函数将双击表格组件中的行返回的值赋值给 form 表单中的 ht.widget.TextField 文本框)。...var tField = new ht.widget.TextField();//创建一个文本框 tField.setText('');//文本框的内容为空 tField.setDisabled...(dm); tableView.addColumns([//用json的数组参数方式批量添加列信息 { displayName: 'ID',//获取表头的列名内容...解释完 fillFormPane 中的参数,来看看这个函数是如何定义的,基本上只差最后一步,点击 tablePane 表格组件中的元素,将这个元素返回给 formPane 表单组件中的 textField

    1.4K20

    C#的WinForm窗体程序中如何设置TextBox为密码文本框

    C#的WinForm窗体程序中如何设置TextBox为密码文本框 – 2019-08-03 23:59 在C#的WinForm窗体程序开发过程中,TextBox是常用的文本框控件,默认的TextBox...文本 框输入的内容是可见的,如果在Winform程序中要设置TextBox文本框为密码输入框应该如何设置呢?...其实将TextBox文本框设置为密码输入 框,也非常的简单,只需要设置TextBox文本框属性中的PasswordChar属性值,PasswordChar属性值自定义,可以为*号,代表输 入字符显示星号...在Winform窗体程序设计界面选中TextBox文本框,然后右键菜单中有个属性,打开属性界面后,在属性设置栏中找到PasswordChar,将PasswordChar属性值设置成某一个常量,如星号*,...也可设置为其他变量如@等。

    5.6K20

    JavaFX-TableView详解

    ,不过最重要的是清楚了一点:TableView内部是维护了一个类型为FXCollections.observableArrayList的集合。...列的两种数据形式: 一种是维护类的TableColumn类型,列的每一个数据都是一个类(这里是一个Person类),而String类型对应列名。...可以向官方文档中那样,也可以先增加一个TextFieldTableCell,然后再添加响应函数: // 设置CellFactory,填充一个TextField进列 col.setCellFactory...增加列,删除列 这就不仅仅要删除集合中的数据,还要从表格里面的Columns集合中删除相应的数据才可以,或许你还会在删除和增加中加入一定的判断来保证操作的正确性: table.getColumns()....add(tempCol); // 列表中显示新增的列 table.getColumns().remove(index); // 删除index位置的列 监听列的变化 你大可以选择向源文件中的那样

    3.5K60

    DevExpress控件中的gridcontrol表格控件,如何在属性中设置某一列显示为图片(图片按钮)

    DevExpress控件中的gridcontrol表格控件,如何在属性中设置某一列显示为图片(图片按钮)?效果如下图: ? 通过属性设置,而不用写代码。...由于此控件的属性太多了,就连设置背景图片的属性都有好几个地方可以设置。本人最近要移植别人开发的项目,找了好久才发现这个属性的位置。之前一直达不到这种效果。...属性设置的步骤和方法如下: 首先添加gridcontrol控件,如下图,点击Run Designer ?...然后点击Columns添加列,点击所添加的列再按照如下步骤设置属性: 在属性中找到ColumnEdit,把ColumnEdit的TextEditStyle属性设置为HideTextEditor;  展开...ColumnEdit,把ColumnEdit中的Buttons展开,将其Kind属性设置为Glyph; 找到其中的Buttons,展开,找到其中的0-Glyph,展开,找到其中的ImageOptions

    6.1K50

    Laravel 使用Excel导出的文件中,指定列数据格式为日期,方便后期的数据筛选操作

    背景 最近,后台运维要求导出的 Excel文件,对于时间的筛选,能满足年份、月份的选择 通过了解,发现: 先前导出的文件,默认列数据都是字符串(文本)格式 同时,因为用的是 Laravel-excel...excel中正确显示成可以筛选的日期格式数据 提示 1....// ...其他表头 ]; } public function columnFormats(): array { // 设置日期格式的筛选.../** * @notes:获取导出的数据 * @return array 注意返回的数据为 Collection 集合形式 * @author: zhanghj...excel中正确显示成可以筛选的日期格式数据 Laravel Excel 3.1 导出表格详解(自定义sheet,合并单元格,设置样式,格式化列数据)

    12510

    在iOS中怎样创建可展开的Table View?(上)

    .为不同功能的app创建新的视图控制器经常是强制性的,并且好几次都是有点让人退缩的任务.然而,如果你只是使用可展开的tableview,有时也可能避免创建视图控制器(以及在storyboard中它们各自的场景...在这一点上,我们通常会在我们的工程中创建一个新的plist文件,然后我们将开始填充合适的数据.当然你也可以不这么做,你可以下载.plist文件.所以,下载它并把它添加到起始项目里去吧.设置所有cell的属性需要大量的空间...现在让我们实现这个新的函数吧.你可能猜到了,我们将通过所有的cell描述和我们在上面添加的cell索引的2D数组,把"可见"属性设置为YES.显然,我们需要处理一个嵌套循环,但是却不难处理.下面是这个函数的实现...,根据它是否被设置为"on"或者没有描述符.注意,之后我们会修改这个值....也有一些cell有"idCellValuePicker"标识符.那些cell意味着提供了一列选项,并且一个选项的父cell被选中的时候,它将会自动合拢.在上面显示的情况,将会指定cell的文本标签.

    1.8K50
    领券