JavaFX如何从TableView到textfield获取值

JavaFX如何从TableView到textfield获取值,javafx,Javafx,有人帮帮我,我如何将一个值从TableView(TableView显示数据库中的数据)传递到textField,然后将相同的值保存到数据库 问候 ps我可以显示源代码 我想我不能解释它,我给你看一段代码 这是我的第一个fxml文件,我从用户那里获取数据: <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import

有人帮帮我,我如何将一个值从TableView(TableView显示数据库中的数据)传递到textField,然后将相同的值保存到数据库

问候 ps我可以显示源代码

我想我不能解释它,我给你看一段代码 这是我的第一个fxml文件,我从用户那里获取数据:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>

<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="mojprogram.elkosz.controllers.AddCashRegisterController">
   <children>
      <GridPane prefHeight="398.0" prefWidth="624.0">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="295.0" minWidth="10.0" prefWidth="193.0" />
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="449.0" minWidth="10.0" prefWidth="407.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Label text="Model Kasy Fiskalnej" GridPane.rowIndex="1" />
            <Label text="Numer Seryjny" GridPane.rowIndex="2" />
            <Label text="Data Zakupu" GridPane.rowIndex="3" />
            <Label text="Data Pierwszego Przeglądu" GridPane.rowIndex="4" />
            <Button fx:id="choisebutton" mnemonicParsing="false" onAction="#choiceCompany" text="Firma" />
            <Label text="Data Następnego Przeglądu" GridPane.rowIndex="5" />
            <TextField fx:id="companytextfieldCH" GridPane.columnIndex="1" />
            <TextField fx:id="cashMachinetextfield" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <TextField fx:id="serialnumber" GridPane.columnIndex="1" GridPane.rowIndex="2" />
            <DatePicker fx:id="buydate" GridPane.columnIndex="1" GridPane.rowIndex="3" />
            <DatePicker fx:id="firstcheck" GridPane.columnIndex="1" GridPane.rowIndex="4" />
            <DatePicker fx:id="nextchech" GridPane.columnIndex="1" GridPane.rowIndex="5" />
            <Button fx:id="addmachine" mnemonicParsing="false" onAction="#addCashRegister" text="Dodaj" GridPane.columnIndex="1" GridPane.rowIndex="6" />
         </children>
      </GridPane>
   </children>
</HBox>
这是带有Tableview的fxml文件

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>

<VBox fx:id="choiceCompany" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="487.0" prefWidth="743.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="mojprogram.elkosz.controllers.ChoiceCompanyController">
   <children>
      <TableView fx:id="CompanyTableView" onMouseClicked="#choice" prefHeight="446.0" prefWidth="743.0">
        <columns>
          <TableColumn fx:id="companycolumn" prefWidth="120.0" text="Nazwa Firmy" />
          <TableColumn fx:id="NIPcolumn" prefWidth="116.0" text="NIP" />
            <TableColumn fx:id="citycolumn" minWidth="0.0" prefWidth="115.0" text="Miejscowość" />
            <TableColumn fx:id="streetcolum" minWidth="0.0" prefWidth="113.0" text="Ulica" />
            <TableColumn fx:id="contactcolumn" prefWidth="124.0" text="Osoba Kontaktowa" />
            <TableColumn fx:id="phonecolumn" prefWidth="153.0" text="Numer Telefonu" />
        </columns>
      </TableView>
      <HBox alignment="CENTER_RIGHT" prefHeight="100.0" prefWidth="200.0">
         <children>
            <Button fx:id="closeButton" mnemonicParsing="false" onAction="#closeButtonaction" prefHeight="25.0" prefWidth="75.0" text="Ok" />
         </children>
         <opaqueInsets>
            <Insets />
         </opaqueInsets>
         <VBox.margin>
            <Insets right="35.0" />
         </VBox.margin>
      </HBox>
   </children>
</VBox>

这是这个的控制器

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import mojprogram.elkosz.modelFX.CompanyFx;
import mojprogram.elkosz.modelFX.CompanyListModel;
import org.omg.CORBA.portable.ApplicationException;

import java.awt.*;


public class ChoiceCompanyController {
   @FXML
    public Button closeButton;

    public VBox getChoiceCompany() {
        return choiceCompany;
    }

    @FXML
    private VBox choiceCompany;
    @FXML
    private TableView<CompanyFx> CompanyTableView;

    @FXML
    private TableColumn<CompanyFx, String> companycolumn;
    @FXML
    private TableColumn<CompanyFx, String> NIPcolumn;
    @FXML
    private TableColumn<CompanyFx, String> citycolumn;
    @FXML
    private TableColumn<CompanyFx, String> streetcolum;
    @FXML
    private TableColumn<CompanyFx, String> contactcolumn;
    @FXML
    private TableColumn<CompanyFx, String> phonecolumn;

    private CompanyListModel companyListModel;



    @FXML
    private void initialize(){
        this.companyListModel = new CompanyListModel();
        try {
            this.companyListModel.iniati();
        } catch (ApplicationException e) {
            e.printStackTrace();
        }
        this.CompanyTableView.setItems(this.companyListModel.getCompanyFxObservableList());
        this.companycolumn.setCellValueFactory(cellData -> cellData.getValue().companyNameFxProperty());
        this.NIPcolumn.setCellValueFactory(cellData -> cellData.getValue().NIPfxProperty());
        this.citycolumn.setCellValueFactory(cellData -> cellData.getValue().cityfxProperty());
        this.streetcolum.setCellValueFactory(cellData -> cellData.getValue().streetfxProperty());
        this.contactcolumn.setCellValueFactory(cellData -> cellData.getValue().contactpersonfxProperty());
        phonecolumn.setCellValueFactory(cellData -> cellData.getValue().phonenumberfxProperty());

    }
    @FXML
    public void choice() {

        //CompanyTableView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
        CompanyFx selected = CompanyTableView.getSelectionModel().getSelectedItem();
        System.out.print(selected.toString());
    }

    @FXML
    public void closeButtonaction() {
        Stage stage = (Stage) closeButton.getScene().getWindow();
        stage.close();
    }
}
导入javafx.event.ActionEvent;
导入javafx.fxml.fxml;
导入javafx.scene.control.Button;
导入javafx.scene.control.SelectionMode;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.layout.VBox;
导入javafx.stage.stage;
导入mojprogram.elkosz.modelFX.CompanyFx;
导入mojprogram.elkosz.modelFX.CompanyListModel;
导入org.omg.CORBA.portable.ApplicationException;
导入java.awt.*;
公共类选择公司控制器{
@FXML
公共按钮关闭按钮;
公共VBox getChoiceCompany(){
返回选择公司;
}
@FXML
私人VBox选择公司;
@FXML
私有TableView CompanyTableView;
@FXML
私有表列公司列;
@FXML
私有表列NIP列;
@FXML
私有表列城市列;
@FXML
私人桌柱街柱;
@FXML
私有表列contactcolumn;
@FXML
私有表列和电话列;
私人公司模式公司模式;
@FXML
私有void初始化(){
this.companyListModel=新的companyListModel();
试一试{
this.companyListModel.ini();
}捕获(ApplicationException e){
e、 printStackTrace();
}
this.CompanyTableView.setItems(this.companyListModel.getCompanyFxObservableList());
this.companycolumn.setCellValueFactory(cellData->cellData.getValue().companyNameFxProperty());
this.NIPcolumn.setCellValueFactory(cellData->cellData.getValue().NIPfxProperty());
this.citycolumn.setCellValueFactory(cellData->cellData.getValue().cityfxProperty());
this.streetcolum.setCellValueFactory(cellData->cellData.getValue().streetfxProperty());
this.contactcolumn.setCellValueFactory(cellData->cellData.getValue().contactpersonfxProperty());
设置CellValueFactory(cellData->cellData.getValue().PhoneNumberXProperty());
}
@FXML
公共选择{
//CompanyTableView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
CompanyFx selected=CompanyTableView.getSelectionModel().getSelectedItem();
System.out.print(selected.toString());
}
@FXML
公共无效关闭按钮操作(){
Stage Stage=(Stage)closeButton.getScene().getWindow();
stage.close();
}
}

从这个tableview中,我尝试将值传递给textfield,然后我想将它保存在数据库的新表中

我并不完全理解您需要什么,但我认为您希望从tableview的行中获取值,并将单元格的值传递给textfield,如果您访问行并逐个从单元格中获取值,则可以这样做

        PersonView.setRowFactory(event -> {
        TableRow<Person> row = new TableRow<>();

        row.setOnMouseEntered(event -> {
            try {

                if (row.isSelected) {

                    if (row.getItem().getId() != null && row.getItem().getName() != null) {
                     String Id=row.getItem.getId();
                     String Name=row.getItem.getId();
                     IdTextField.setText(Id);                        
                     NameTextField.setText(Name);
                    }


        });
        return row;
    });
PersonView.setRowFactory(事件->{
TableRow行=新TableRow();
row.SetOnMouseCentered(事件->{
试一试{
如果(选择第行){
if(row.getItem().getId()!=null和&row.getItem().getName()!=null){
String Id=row.getItem.getId();
字符串名称=row.getItem.getId();
IdTextField.setText(Id);
NameTextField.setText(名称);
}
});
返回行;
});

我希望这段代码可以帮助您

解释“从
TableView
传递值”的含义.A
TableView
由一个对象列表支持。您在这里的意思是什么?不确定,但听起来@DGRay希望编辑
TableView
的字段,并在更新后更新其数据库。只是猜测一下。我使用ObjectProperty填充此TableView,用户可以选择一行(我需要从一列中获取一个值,但我认为我需要获取对象,因为我想在新的数据库表中创建外键)此表中的值转移到TextField,此TextField值保存到数据库中的新表我希望您能理解。当您得到答案时,请不要编辑您的帖子以删除您的代码。请不要破坏您的帖子。通过在Stack Exchange网络上发布,您已授予SE分发该内容的不可撤销的权利(根据)。根据SE政策,任何故意破坏行为都将被恢复。如果您想解除此帖子与您帐户的关联,请参阅
        PersonView.setRowFactory(event -> {
        TableRow<Person> row = new TableRow<>();

        row.setOnMouseEntered(event -> {
            try {

                if (row.isSelected) {

                    if (row.getItem().getId() != null && row.getItem().getName() != null) {
                     String Id=row.getItem.getId();
                     String Name=row.getItem.getId();
                     IdTextField.setText(Id);                        
                     NameTextField.setText(Name);
                    }


        });
        return row;
    });