#java #javafx #javafx-2 #javafx-8 #fxml
#java #javafx #javafx-2 #javafx-8 #fxml
Вопрос:
я хочу отредактировать данные строки tableview у меня было несколько кодов, которые редактируют данные ячейки, но они не работают в моем проекте fxml-кода:
<TableView fx:id="table" layoutX="112.0" layoutY="25.0" prefHeight="430.0" prefWidth="505.0">
<columns>
<TableColumn fx:id="tablecol" prefWidth="490.0" text="Schedule Item">
<cellValueFactory>
<PropertyValueFactory property="firstName" />
</cellValueFactory></TableColumn>
</columns>
</TableView>
в fxml fx:id="tablecol"
и fx:id="table"
используются
код:
@FXML
private TableView<person1> table;
@FXML
private TableColumn<person1, String> tablecol;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
tablecol.setCellFactory(TextFieldTableCell.forTableColumn());
tablecol.setOnEditCommit(
new EventHandler<CellEditEvent<person1, String>>() {
@Override
public void handle(CellEditEvent<person1, String> t) {
((person1) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setFirstName(t.getNewValue());
}
}
); try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/schoolmanagement","root","root");
String sql="SELECT * FROM `scheduleitem` ";
Statement stm=(Statement) con.createStatement();
ResultSet rs=stm.executeQuery(sql);
while(rs.next()){
table.getItems().add(new person1(rs.getString(2)));
}
}
catch (ClassNotFoundException | SQLException e) {
}
}
}
public class person1 {
private final StringProperty firstName = new SimpleStringProperty("");
public person1(String firstName) {
setFirstName(firstName);
}
public String getFirstName() {
return firstName.get();
}
public void setFirstName(String name) {
this.firstName.set(name);
}
public StringProperty firstNameProperty() {
return firstName;
}
пожалуйста, помогите, почему я не могу редактировать данные ячейки.
Спасибо.
Ответ №1:
Хотя TableColumn
s доступны для редактирования по умолчанию, TableView
s — нет. Итак, вам нужно
<TableView fx:id="table" editable="true" ...>