我想要做的是点击按钮从当前选定行获取数据,然后返回。然而,它现在返回的东西似乎是packagename+ classname+ randomnumbers
和字母。
simple.UserDetails@3f59ec1e
simple.UserDetails@210337a8
选择另一行时,随机数字和字母会发生变化。我尝试使用线程作为示例。
Getting selected item from a JavaFX TableView。我想知道如何达到我想要的结果。并且,如果可能的话,也可以将数据保存在变量中。
我使用的方法:
@FXML
public void getRow() {
UserDetails row = tableview.getSelectionModel().getSelectedItem();
System.out.println(row);
}
控制器类。
package simple;
import java.net.URL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
/**
*
* @author admin
*/
public class FXMLUserController implements Initializable {
@FXML
private TableView<UserDetails> tableview;
@FXML
private TableColumn<UserDetails, String> columnId;
@FXML
private TableColumn<UserDetails, String> columnType;
@FXML
private TableColumn<UserDetails, String> columnKleur;
@FXML
private TableColumn<UserDetails, String> columnLuchthaven;
@FXML
private TableColumn<UserDetails, String> columnKenmerken;
@FXML
private TableColumn<UserDetails, String> columnStatus;
@FXML
private TableColumn<UserDetails, String> columnDatum;
@FXML
private Button btnLoad;
//declare observable list for database data
private ObservableList<UserDetails> data;
private DbConnection dc;
@FXML
private Button editRow;
@Override
public void initialize(URL url, ResourceBundle rb) {
dc = new DbConnection();
loadDataFromDatabase();
}
@FXML
public void loadDataFromDatabase() {
try {
Connection conn = dc.Connect();
data = FXCollections.observableArrayList();
// Execute query and store result in a resultset
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM gevonden_bagage");
while (rs.next()) {
//get strings
data.add(new UserDetails(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5),
rs.getString(6), rs.getString(7)));
}
} catch (SQLException ex) {
System.err.println("Error" + ex);
}
//Set cell values to tableview.
tableview.setEditable(true);
columnId.setCellValueFactory(new PropertyValueFactory<>("id"));
columnType.setCellValueFactory(new PropertyValueFactory<>("type"));
columnKleur.setCellValueFactory(new PropertyValueFactory<>("kleur"));
columnLuchthaven.setCellValueFactory(new PropertyValueFactory<>("luchthaven"));
columnKenmerken.setCellValueFactory(new PropertyValueFactory<>("kenmerken"));
columnStatus.setCellValueFactory(new PropertyValueFactory<>("status"));
columnDatum.setCellValueFactory(new PropertyValueFactory<>("datum"));
tableview.setItems(null);
tableview.setItems(data);
}
@FXML
public void getRow() {
UserDetails row = tableview.getSelectionModel().getSelectedItem();
System.out.println(row);
}
}
模型类
package simple;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
/**
*
* @author admin
*/
public class UserDetails {
private final StringProperty id;
private final StringProperty type;
private final StringProperty kleur;
private final StringProperty luchthaven;
private final StringProperty kenmerken;
private final StringProperty status;
private final StringProperty datum;
//Default constructor
public UserDetails(String id, String type, String kleur, String luchthaven, String kenmerken, String status, String datum) {
this.id = new SimpleStringProperty(id);
this.type = new SimpleStringProperty(type);
this.kleur = new SimpleStringProperty(kleur);
this.luchthaven = new SimpleStringProperty(luchthaven);
this.kenmerken = new SimpleStringProperty(kenmerken);
this.status = new SimpleStringProperty(status);
this.datum = new SimpleStringProperty(datum);
}
//getters
public String getId() {
return id.get();
}
public String getType() {
return type.get();
}
public String getKleur() {
return kleur.get();
}
public String getLuchthaven() {
return luchthaven.get();
}
public String getKenmerken() {
return kenmerken.get();
}
public String getStatus() {
return status.get();
}
public String getDatum() {
return datum.get();
}
//setters
public void setId(String value) {
id.set(value);
}
public void setType(String value) {
type.set(value);
}
public void setKleur(String value) {
kleur.set(value);
}
public void setLuchthaven(String value) {
luchthaven.set(value);
}
public void setKenmerken(String value) {
kenmerken.set(value);
}
public void setStatus(String value) {
status.set(value);
}
public void setDatum(String value) {
datum.set(value);
}
//property values
public StringProperty idProperty() {
return id;
}
public StringProperty typeProperty() {
return type;
}
public StringProperty kleurProperty() {
return kleur;
}
public StringProperty luchthavenProperty() {
return luchthaven;
}
public StringProperty kenmerkenProperty() {
return kenmerken;
}
public StringProperty statusProperty() {
return status;
}
public StringProperty datumProperty() {
return datum;
}
}
答案 0 :(得分:0)
你需要说一下像row.someMethodorVariableInUserDetails这样的东西 您尝试返回的内容是在UserDetails类中
从here
查看此示例Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
在这个例子中,他们不得不说person.somemethod()。在这种情况下,person.getName();