2016-12-06 6 views
0

Ich versuche zu tun ist, die Daten aus der aktuellen ausgewählten Zeile auf einen Klick auf die Schaltfläche zu erhalten, und geben Sie das zurück. Was es jetzt zurückgibt, ist jedoch etwas, das im Format packagename+ classname+ randomnumbers und Buchstaben zu sein scheint.javafx getselecteditem gibt unerwartete Ausgabe zurück

[email protected] 
[email protected] 

Zufallszahlen und Buchstaben ändern sich, wenn eine andere Zeile ausgewählt wird. Ich habe versucht, Thread als Beispiel zu verwenden.
Getting selected item from a JavaFX TableView. Ich hätte gerne eine Antwort darauf, wie ich das gewünschte Ergebnis erreichen kann. Und wenn möglich, können Sie die Daten auch in Variablen speichern.

Methode I verwendet werden:

@FXML 
    public void getRow() { 
     UserDetails row = tableview.getSelectionModel().getSelectedItem(); 
     System.out.println(row); 
    } 

Die Controller-Klasse.

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); 
    } 
} 

Modellklasse

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

Veröffentlichen Sie Ihre UserDetails-Klasse. – Sedrick

Antwort

0

Sie benötigen etwas wie row.someMethodorVariableInUserDetails zu sagen, was auch immer Sie versuchen, in Ihrem Userdetails Klasse zurückzukehren

Schauen Sie sich das Beispiel von here

Person person = taview.getSelectionModel().getSelectedItem(); 
System.out.println(person.getName()); 

I In diesem Beispiel müssen sie person.somethod() sagen. In diesem Fall person.getName();

+0

Eine andere Sache, die Sie wahrscheinlich tun könnten, ist, die toString-Methode zu Ihrer UserDetails-Klasse hinzuzufügen. Dann könnten Sie sagen System.out.println (row.toString()); Ich habe das nicht getestet, aber es ist einen Versuch wert. – Sedrick

+1

Danke für die Antwort. Ich konnte es schaffen, indem ich alle Getter meiner UserDetails-Klasse benutzte. Wie in Ihrem Beispiel oben erwähnt .. –