我正在尝试用数据表单数据库填充 TableView 。我设法成功地将TableView中的元素添加到数据库中,但是现在我需要以其他方式进行操作,而我无法管理。我将元素存储到ObservableList中,我也想从那里检索它。是一个测试项目,我将其保持简单,只是名称和年龄为SimpleStringProperties
public class Spieler {
private final StringProperty name;
private final StringProperty age;
private final StringProperty photo;
public Spieler() {
this(null,null,null);
}
public Spieler(String name,String age,String photo) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleStringProperty(age);
this.photo = new SimpleStringProperty(photo);
}
public String getName() {
return name.get();
}
public void setName(String name) {
this.name.set(name);
}
public StringProperty nameProperty() {
return name;
}
public String getage() {
return age.get();
}
public void setage(String age) {
this.age.set(age);
}
public StringProperty ageProperty() {
return age;
}
public String getPhoto() {
return photo.get();
}
public void setPhoto(String photo) {
this.photo.set(photo);
}
public StringProperty photoProperty() {
return photo;
}
}
这是添加新播放器来处理表和数据库的方法
public class listsLayoutController {
Connection conn;
@FXML
private TextField nameField;
@FXML
private TextField ageField;
@FXML
private TextField photoField;
@FXML
private ImageView picViews;
@FXML
private TableView<Spieler> team;
@FXML
private TableColumn<Spieler,String> nameColumn;
@FXML
private TableColumn<Spieler,String> ageColumn;
@FXML
private Label nameLab;
@FXML
private Label ageLab;
@FXML
private Image picture;
private MainTest mainTest;
private Spieler spieler;
ObservableList<Spieler> spielerData = FXCollections.observableArrayList();
public listsLayoutController() {
}
@FXML
private void initialize() {
nameColumn.setCellValueFactory(cellData -> cellData.getvalue().nameProperty());
ageColumn.setCellValueFactory(cellData -> cellData.getvalue().ageProperty());
showSpielerDetails(null);
team.getSelectionmodel().selectedItemProperty().addListener((observable,oldValue,newValue) -> showSpielerDetails(newValue));
team.setItems(spielerData);
}
@FXML
private void handleNewSpieler() {
Spieler tempSpieler = new Spieler();
boolean OkClicked = mainTest.showSpielerEditDialog(tempSpieler);
if(OkClicked) {
mainTest.getSpielerData().add(tempSpieler);
}
String sqlDB = "INSERT INTO list(name,age) VALUES (?,?)";
try {
Connection conn = Database.Connector();
PreparedStatement stmt = conn.prepareStatement(sqlDB);
stmt.setString(1,tempSpieler.getName());
stmt.setString(2,tempSpieler.getage());
stmt.execute();
conn.close();
System.out.println(tempSpieler.getage().toString()+ " " + tempSpieler.getName());
}
catch(SQLException e) {
e.printStackTrace();
}
}
启动应用程序时,我只是无法将播放器数据获取到TableView中。任何帮助将不胜感激