JavaFX如何从TableView到textfield获取值
有人帮帮我,我如何将一个值从TableView(TableView显示数据库中的数据)传递到textField,然后将相同的值保存到数据库 问候 ps我可以显示源代码 我想我不能解释它,我给你看一段代码 这是我的第一个fxml文件,我从用户那里获取数据:JavaFX如何从TableView到textfield获取值,javafx,Javafx,有人帮帮我,我如何将一个值从TableView(TableView显示数据库中的数据)传递到textField,然后将相同的值保存到数据库 问候 ps我可以显示源代码 我想我不能解释它,我给你看一段代码 这是我的第一个fxml文件,我从用户那里获取数据: <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import
<?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
传递值”的含义.ATableView
由一个对象列表支持。您在这里的意思是什么?不确定,但听起来@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;
});