首页
学习
活动
专区
工具
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文档后,我们可以看到所选文本文本内容就自动按设置进行了分栏;

    9.9K10

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

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

    4.9K100

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

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

    3.9K80

    iOS14开发-UIView

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

    11.8K10

    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.3K20

    JavaFX-TableView详解

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

    3.4K60

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

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

    6K50

    Android开发ImageLoder加载网络图片时图片设置ImageView背景方法

    本文实例讲述了Android开发ImageLoder加载网络图片时图片设置ImageView背景方法。...,比如通过设置src在某些场景下是不能填充满整个ImageView,但是通过设置背景就可以实现,而框架并没有提供图片设置背景方法,我在网上找了半天也看到了一些解决方案,但不是我想要,于是我决定去看看源码是怎么实现...废话到此为止 开始进入主题(上代码) /** * 加载网络图片设置ImageView背景 * * @param url * @param view */ public void loadImageToBackground...这个类,我在看源码时候发现ImageLoder就是通过 ImageViewAware这个类把加载图片设置到src属性(有兴趣小伙伴可以自己去看源码,源码我就不贴出来了),所以我只需要重写这个类方法图片设置到背景就解决了...下面是BgImageViewAware类代码: /** * <pre 图片设置ImageView背景</pre * Created by ZCM on 2016/8/5. version

    2K10

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

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

    1.8K50
    领券