Hi,
ich bin gerade dabei eine Kontaktverwaltung zu Programmieren und nutze als Framework JavaFX. Allerdings werden in der Tableview nicht alle Inhalte angezeigt. Die Inhalte der Spalten ID, Hausnummer, E-Mail und Telefonnummer nicht angezeigt. Die Daten kommen dabei aus einer Datenbank und werden in Objekten der statischen Klasse Person gespeichert.
Hier mein Code:
Ich habe die Arrays welche die ObservableArrayList befüllen überprüft, dort stehen die richtigen werte drin. Aber warum werden sie nicht angezeigt?
ich bin gerade dabei eine Kontaktverwaltung zu Programmieren und nutze als Framework JavaFX. Allerdings werden in der Tableview nicht alle Inhalte angezeigt. Die Inhalte der Spalten ID, Hausnummer, E-Mail und Telefonnummer nicht angezeigt. Die Daten kommen dabei aus einer Datenbank und werden in Objekten der statischen Klasse Person gespeichert.
Hier mein Code:
Java:
package GUI;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Core.DatabaseConnection;
import GUI.MainFrame.Person;
import RunProgram.Run;
import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleLongProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
public class MainFrame extends Application {
DatabaseConnection dbConnection;
BorderPane content;
HBox buttonContainer;
Scene scene;
TableView<Person> table;
Button add;
Button edit;
Button newCancel;
Button newAdd;
ObservableList<Person> data;
int start = 1;
public void start(Stage stage) {
dbConnection = new DatabaseConnection();
dbConnection.openConnection();
stage.setTitle("Kontakt edit tool");
content = new BorderPane();
content.setPadding(new Insets(2, 5, 5, 5));
buttonContainer = new HBox();
buttonContainer.setSpacing(5);
table = new TableView<Person>();
TableColumn<Person, String> id = new TableColumn<Person, String>("ID");
id.setMinWidth(60);
id.setCellValueFactory(new PropertyValueFactory<Person, String>("id"));
TableColumn<Person, String> gender = new TableColumn<Person, String>("Anrede");
gender.setMinWidth(100);
gender.setCellValueFactory(new PropertyValueFactory<Person, String>("gender"));
TableColumn<Person, String> lastname = new TableColumn<Person, String>("Nachname");
lastname.setMinWidth(100);
lastname.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
TableColumn<Person, String> firstname = new TableColumn<Person, String>("Vorname");
firstname.setMinWidth(100);
firstname.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
TableColumn<Person, String> city = new TableColumn<Person, String>("Stadt/Dorf");
city.setMinWidth(100);
city.setCellValueFactory(new PropertyValueFactory<Person, String>("city"));
TableColumn<Person, String> street = new TableColumn<Person, String>("Straße");
street.setMinWidth(90);
street.setCellValueFactory(new PropertyValueFactory<Person, String>("street"));
TableColumn<Person, String> houseNumber = new TableColumn<Person, String>("Hausnummer");
houseNumber.setMinWidth(100);
houseNumber.setCellValueFactory(new PropertyValueFactory<Person, String>("houseNumber"));
TableColumn<Person, String> email = new TableColumn<Person, String>("E-Mail - Adresse");
email.setMinWidth(100);
email.setCellValueFactory(new PropertyValueFactory<Person, String>("eMail"));
TableColumn<Person, String> phone = new TableColumn<Person, String>("Telefonnummer");
phone.setMinWidth(130);
phone.setCellValueFactory(new PropertyValueFactory<Person, String>("phoneNumber"));
setData();
table.setItems(data);
table.getColumns().addAll(id, gender, lastname, firstname, city, street, houseNumber, email, phone);
add = new Button("Add");
edit = new Button("Edit");
newCancel = new Button();
newAdd = new Button();
scene = new Scene(new Group());
buttonContainer.setPadding(new Insets(2, 2, 2, 2));
buttonContainer.getChildren().addAll(add, edit);
content.setCenter(table);
content.setBottom(buttonContainer);
scene.setRoot(content);
stage.getIcons().add(new Image(Run.class.getResourceAsStream("IBM-DB2.png")));
stage.setScene(scene);
stage.setMaximized(true);
stage.show();
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent arg0) {
// TODO Auto-generated method stub
dbConnection.closeConnection();
}
});
listener();
}
public void launchProgram() {
launch();
}
private void listener() {
AddRecord addRecord = new AddRecord(dbConnection);
add.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
addRecord.show();
}
});
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
String key = e.getCode().toString();
// System.out.println(key);
switch (key) {
// case "F5": setData();
// break;
case "PAGE_UP":
pageUp();
break;
case "PAGE_DOWN":
pageDown();
}
}
});
table.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
String key = e.getCode().toString();
// System.out.println(key);
switch (key) {
case "F5":
setData();
break;
case "PAGE_UP":
pageUp();
break;
case "PAGE_DOWN":
pageDown();
}
}
});
addRecord.listener();
}
private void pageUp() {
try {
dbConnection.getRecords();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int record = dbConnection.getRecordValue();
if (start < record) {
start++;
setData();
} else {
JOptionPane.showMessageDialog(null, "Daten ende erreicht");
}
}
private void pageDown() {
if (start > 1) {
start--;
setData();
} else {
JOptionPane.showMessageDialog(null, "Daten anfang erreicht");
}
}
public void setData() {
ArrayList<Integer> idArrayList = new ArrayList<>();
ArrayList<String> genderArrayList = new ArrayList<>();
ArrayList<String> lastnameArrayList = new ArrayList<>();
ArrayList<String> firstnameArrayList = new ArrayList<>();
ArrayList<String> cityArrayList = new ArrayList<>();
ArrayList<String> streetArrayList = new ArrayList<>();
ArrayList<Integer> housenumberArrayList = new ArrayList<>();
ArrayList<String> emailArrayList = new ArrayList<>();
ArrayList<Long> phonenumberArrayList = new ArrayList<>();
try {
idArrayList = dbConnection.getIDs(start);
genderArrayList = dbConnection.getGenders(start);
lastnameArrayList = dbConnection.getLastnames(start);
firstnameArrayList = dbConnection.getFirstnames(start);
cityArrayList = dbConnection.getCitys(start);
streetArrayList = dbConnection.getStreets(start);
housenumberArrayList = dbConnection.getHousenumbers(start);
emailArrayList = dbConnection.getEmails(start);
phonenumberArrayList = dbConnection.getPhonenumbers(start);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int count = idArrayList.size();
System.out.println(idArrayList.toString());
System.out.println(genderArrayList.toString());
System.out.println(lastnameArrayList.toString());
System.out.println(firstnameArrayList.toString());
System.out.println(cityArrayList.toString());
System.out.println(streetArrayList.toString());
System.out.println(housenumberArrayList.toString());
System.out.println(emailArrayList.toString());
System.out.println(phonenumberArrayList.toString());
data = FXCollections.observableArrayList();
for (int i = 0; i < count; i++) {
data.add(new Person(idArrayList.get(i), genderArrayList.get(i), lastnameArrayList.get(i), firstnameArrayList.get(i), cityArrayList.get(i), streetArrayList.get(i), housenumberArrayList.get(i), emailArrayList.get(i), phonenumberArrayList.get(i)));
}
}
public static class Person {
private final SimpleIntegerProperty id;
private final SimpleStringProperty gender;
private final SimpleStringProperty lastName;
private final SimpleStringProperty firstName;
private final SimpleStringProperty city;
private final SimpleStringProperty street;
private final SimpleIntegerProperty houseNumber;
private final SimpleStringProperty eMail;
private final SimpleLongProperty phoneNumber;
private Person(int id, String gender, String lastname, String firstname, String city, String street, int housenumber, String email, long phonenumber) {
this.id = new SimpleIntegerProperty(id);
this.gender = new SimpleStringProperty(gender);
this.lastName = new SimpleStringProperty(lastname);
this.firstName = new SimpleStringProperty(firstname);
this.city = new SimpleStringProperty(city);
this.street = new SimpleStringProperty(street);
this.houseNumber = new SimpleIntegerProperty(housenumber);
this.eMail = new SimpleStringProperty(email);
this.phoneNumber = new SimpleLongProperty(phonenumber);
}
public int getID() {
return this.id.get();
}
public void setID(int id) {
this.id.set(id);
}
public String getGender() {
return this.gender.get();
}
public void setGender(String gender) {
this.gender.set(gender);
}
public String getLastName() {
return this.lastName.get();
}
public void setLastName(String lastname) {
this.lastName.set(lastname);
}
public String getFirstName() {
return this.firstName.get();
}
public void setFirstName(String firstname) {
this.firstName.set(firstname);
}
public String getCity() {
return this.city.get();
}
public void setCity(String city) {
this.city.set(city);
}
public String getStreet() {
return this.street.get();
}
public void setStreet(String street) {
this.street.set(street);
}
public int getHousenumber() {
return this.houseNumber.get();
}
public void setHousenumber(int housenumber) {
this.houseNumber.set(housenumber);
}
public String getEmail() {
return this.eMail.get();
}
public void setEmail(String fName) {
this.eMail.set(fName);
}
public long getPhone() {
return this.phoneNumber.get();
}
public void setPhone(long phonenumber) {
this.phoneNumber.set(phonenumber);
}
}
}
Ich habe die Arrays welche die ObservableArrayList befüllen überprüft, dort stehen die richtigen werte drin. Aber warum werden sie nicht angezeigt?