私は、ボタンクリックで現在選択されている行からデータを取得して返します。しかし、今戻ってくるものは、packagename+ classname+ randomnumbers
と手紙の形式であると思われるものです。javafx getselecteditemは予期しない出力を返します
[email protected]
[email protected]
別の行が選択されると、乱数と文字が変更されます。私は例としてスレッドを使用しようとしました。
Getting selected item from a JavaFX TableView。私は、私が望む結果をどのように達成できるかについての回答を希望します。可能であれば、変数にもデータを保存することができます。
I使用する方法:
@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);
}
}
あなたが返すようにしようとしている今まで何row.someMethodorVariableInUserDetails ような何かを言う必要Modelクラス
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;
}
}
UserDetailsクラスを投稿してください。 – Sedrick