javafx - 如何获取所选行的单元格值

时间:2017-01-11 15:25:14

标签: java javafx

我正在尝试解决一个基本问题。你能不能看看这段代码并推动我前进一点?

我有这个

public class StrediskoController {
private Stage dialogStage;

@FXML private TableView strediskaTableView = new TableView<>();
@FXML private Label nameLabel;

private ObservableList<Stredisko> data = FXCollections.observableArrayList();

@FXML public void initialize() {
    System.out.println("test");
    strediskaTableView.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> {
        //Check whether item is selected and set value of selected item to Label
        if (strediskaTableView.getSelectionModel().getSelectedItem() != null) {

            nameLabel.setText(".....");

        }
    });

}

public void setDialogStage(Stage dialogStage) { this.dialogStage = dialogStage; }

public void GetStrediska() {
    new StrediskoDAO().SeeAllStredisko(data, strediskaTableView);
}

我想在tableview中选择一行,并将第二列的值放入label中。

我的StrediskoDAO看起来像:

public void SeeAllStredisko(ObservableList data, TableView<Stredisko> stredisko)
{
    try
    {
        String select = "Select * from stredisko";
        PreparedStatement stmt = DatabaseConnection.prepareStatement(select);
        ResultSet rst = stmt.executeQuery();

        for(int i=0 ; i<rst.getMetaData().getColumnCount(); i++){
            //using non property style for making dynamic table
            final int j = i;
            TableColumn col = new TableColumn(rst.getMetaData().getColumnName(i+1));
            col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
                public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                    return new SimpleStringProperty(param.getValue().get(j).toString());
                }
            });
            stredisko.getColumns().addAll(col);
            System.out.println("Column ["+i+"] ");
        }

        while(rst.next())
        {
            ObservableList<String> row = FXCollections.observableArrayList();

            for (int i = 1; i <= rst.getMetaData().getColumnCount(); i++)
            {
                row.add(rst.getString(i));
                System.out.println(row);
            }

            data.add(row);
        }
        stredisko.setItems(data);
    }
    catch(ClassNotFoundException | SQLException e)
    {
        e.printStackTrace();
    }
}

和Stredisko

public class Stredisko {
private SimpleIntegerProperty stredisko_Id;
private SimpleStringProperty name;


public Stredisko(int stredisko_Id, String name) {
    this.stredisko_Id = new SimpleIntegerProperty(stredisko_Id);
    this.name = new SimpleStringProperty(name);
}



public int getStredisko_Id() {
    return stredisko_Id.get();
}

public SimpleIntegerProperty stredisko_IdProperty() {
    return stredisko_Id;
}

public void setStredisko_Id(int stredisko_Id) {
    this.stredisko_Id.set(stredisko_Id);
}

public String getName() {
    return name.get();
}

public SimpleStringProperty nameProperty() {
    return name;
}

public void setName(String name) {
    this.name.set(name);
}

我只是JavaFX的初学者,如果你帮助我,我会很高兴: - )

谢谢你们。

0 个答案:

没有答案
相关问题