나는이 질문을 100 번이나 받았다는 것을 알고있다. 그러나 나는 여전히 그것을 작동시킬 수 없다. 내 데이터베이스에 저장된 것과 함께 TableView가 채워지 길 원합니다. (여기에 첫 번째 질문 : 나는 이미 열을 설정해야합니까?)데이터베이스의 내용으로 TableView 채우기
내 비어있는 TableView와 FXML있어
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sopraFx.extended.view.UserEditView">
<children>
<MenuBar layoutY="2.0" prefHeight="32.0" prefWidth="507.0">
</MenuBar>
<Button fx:id="logoutButton" layoutX="506.0" layoutY="2.0" mnemonicParsing="false" onAction="#handleCloseButtonAction" prefHeight="31.0" prefWidth="92.0" text="Zurück" />
<TextField fx:id="tableEditName" layoutX="369.0" layoutY="59.0" prefHeight="31.0" prefWidth="124.0" promptText="Username" />
<TextField fx:id="tableEditPassword" layoutX="369.0" layoutY="115.0" prefHeight="31.0" prefWidth="124.0" promptText="Password" />
<TextField fx:id="tableEditEmail" layoutX="369.0" layoutY="165.0" prefHeight="31.0" prefWidth="124.0" promptText="E-Mail" />
<Button fx:id="editButton" defaultButton="true" layoutX="527.0" layoutY="363.0" mnemonicParsing="false" text="Save" />
<Label layoutX="14.0" layoutY="64.0" text="you want to edit" />
<TableView fx:id="userEditTable" layoutX="6.0" layoutY="34.0" prefHeight="311.0" prefWidth="286.0">
</TableView>
</children>
</AnchorPane>
여기이 권한은 데이터베이스에서 그리고있는 TableView에 물건을 얻기 위해 나의 방법입니다 . 나는 그게 나에게 맞는 것들을 제공하는지 확인하기 위해 지문을 얻었습니다. http://blog.ngopal.com.np/2011/10/19/dyanmic-tableview-data-from-database/comment-page-1/
편집 : 나는 방법을 얻기 위해 해당 자습서를 통해 일
public void initialize() {
TableView tableview = getUserTable();
ObservableList<ObservableList> data;
Connection c;
data = FXCollections.observableArrayList();
try{
c = Database.getConnection();
String SQL = "SELECT * FROM User";
ResultSet rs = c.createStatement().executeQuery(SQL);
for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
//We are using non property style for making dynamic table
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableview.getColumns().addAll(col);
System.out.println("Column ["+i+"] ");
}
while(rs.next()){
//Iterate Row
ObservableList<String> row = FXCollections.observableArrayList();
for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
//Iterate Column
row.add(rs.getString(i));
}
System.out.println("Row [1] added "+row);
data.add(row);
}
//FINALLY ADDED TO TableView
tableview.setItems(data);
}catch(Exception e){
e.printStackTrace();
System.out.println("Error on Building Data");
}
}
: 문제는이 코드입니다
". tableview.getColums() addAll.col"에서 NullPointerExpections를 얻을 수 있다는 것입니다 :
컨트롤러에는 다음과 같은 장면 표시 방법이 있습니다.
private Parent sceneUserEdit;
private UserEditView viewUserEdit;
public Parent userEditScene() throws SQLException {
Stage userEditStage = new Stage();
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("../view/UserEdit.fxml"));
try {
sceneUserEdit = loader.load();
userEditStage.setTitle("SoPra JavaFX");
userEditStage.setScene(new Scene(sceneUserEdit, 600, 400));
userEditStage.show();
} catch (IOException e) {
e.printStackTrace();
}
viewUserEdit = loader.getController();
viewUserEdit.setSimpleController(this);
initialize();
return sceneUserEdit;
}
초기화 방법은 컨트롤러에 있습니다. UserEditView 클래스의 내가 전체의 TableView에 대한 FXMLs을 했죠 그리고 당신 FXML 파일에서 그
@FXML
private TableView<User> userTable;
public TableView<User> getUserTable(){return userTable;}
그래서'tableView'는 null입니까? 아무도 당신이 게시 한 코드를 실제로 진단 할 수는 없습니다. –
그는 TableView를 찾을 수 없다고 생각합니다. 내 UserEditView 클래스에는 TableView에 대한 getter가 있습니다. – Panikx
예, 알 수 있습니다. 그리고 분명히 그것은 'null'을 반환합니다. 아무도 당신이 게시 한 코드에서 왜 그런 일이 일어나고 있는지 말할 수 없습니다. –