Hi, bin neu hier hatte gesehen, dass hier einige sehr gute Lösungen vorgeschlagen wurden, da dachte ich, ich versuch mal mein Glück.
Habe folgendes Problem:
VerwaltungsApp (Benutzeroberfläche) mit Javafx Tableview man kann Benutzer hinzufügen.
Die benutzer werden beim start aus einer .dat datei geladen , in der eine Serialized object list steckt.
habe 4 Klassen was die Verwaltung der Personen angeht:
Person ( int Typ,alter ; String vorname,nachname)
Student extends Person (int matrikelnummer ; String Studiengang)
Studentischehilfskraft extends Student (int arbeitsstunden ; String arbeitsort)
Angestellter extends Person (int arbeitsstunden ; String arbeitsort)
Das erste Problem:
Wenn ich jetzt statt TableColumn<Person, String> eher TableColumn<Student, String>
eingebe weil ich die matrikelnummer populaten möchte taucht ein fehler auf und in person habe ich ja die matrikelnummer nicht drin....
________________________________________________________________________
Mein 2. Problem:
Aus der liste kann ich ja ganz leicht die informationen rausziehen die ich möchte, alerdings wieder nur bedingt, da ich die Liste in der Klasse Person angelegt habe, die anderen Klassen erben diese zwar auch, und wenn ich list.toString(); ausgeben lasse funktioniert alles einwandfrei und sogar matrikelnummer und studiengang werden ausgegeben,
aber mit der Tableview funktioniert das halt nicht und ich kann die matrikelnummer nicht aus der liste ziehen hängt ja mit problem nummer 1 zusammen.... :/
und ich möchte ungern alle daten in der Klasse Person initialisieren/deklarieren.
Hier der ganze code von der Main methode.
der Code gibt alles 2 mal wieder einmal Oberfläche und einmal in der Console.
Consolenprogramm funktioniert super nur die GUI nicht
Was kann ich jetzt denn tun? Seitze seit 11 Stunden ohne einen fortschritt dran. habe sovieles schon ausgetestet
Danke schonmal!!!!!!
Habe folgendes Problem:
VerwaltungsApp (Benutzeroberfläche) mit Javafx Tableview man kann Benutzer hinzufügen.
Die benutzer werden beim start aus einer .dat datei geladen , in der eine Serialized object list steckt.
habe 4 Klassen was die Verwaltung der Personen angeht:
Person ( int Typ,alter ; String vorname,nachname)
Student extends Person (int matrikelnummer ; String Studiengang)
Studentischehilfskraft extends Student (int arbeitsstunden ; String arbeitsort)
Angestellter extends Person (int arbeitsstunden ; String arbeitsort)
Das erste Problem:
Code:
//Vornameame column
TableColumn<Person, String> typColumn = new TableColumn<>("Typ");
typColumn.setMinWidth(200);
typColumn.setCellValueFactory(new PropertyValueFactory<>("typ"));
Wenn ich jetzt statt TableColumn<Person, String> eher TableColumn<Student, String>
eingebe weil ich die matrikelnummer populaten möchte taucht ein fehler auf und in person habe ich ja die matrikelnummer nicht drin....
________________________________________________________________________
Mein 2. Problem:
Code:
public ObservableList<Person> getPerson(){
ObservableList<Person> person= FXCollections.observableArrayList();
int i = indexOfList;
String vorname=null;
int arbeitsort= list.indexOf(2);
String studiengang =null;
String nachname = null;
int alter=0;
int freietage=0;
int arbeitsstunden=0;
int matrikelnummer=0;
int typo=0;
for(Person b :list){
System.out.println(i +": "+ b.toString());
person.add(new Person(b.getVorName(), b.getNachName(), b.getTyp(), b.getAlter(), b.getTage()));
person.add(new StudentischeHilfskraft(b.getVorName(), b.getNachName(),1, b.getAlter(), b.getTage(),"matrikelnummer","sss",i,"ss"));
i++;
};
return person ;
}
Aus der liste kann ich ja ganz leicht die informationen rausziehen die ich möchte, alerdings wieder nur bedingt, da ich die Liste in der Klasse Person angelegt habe, die anderen Klassen erben diese zwar auch, und wenn ich list.toString(); ausgeben lasse funktioniert alles einwandfrei und sogar matrikelnummer und studiengang werden ausgegeben,
aber mit der Tableview funktioniert das halt nicht und ich kann die matrikelnummer nicht aus der liste ziehen hängt ja mit problem nummer 1 zusammen.... :/
und ich möchte ungern alle daten in der Klasse Person initialisieren/deklarieren.
Hier der ganze code von der Main methode.
der Code gibt alles 2 mal wieder einmal Oberfläche und einmal in der Console.
Consolenprogramm funktioniert super nur die GUI nicht
Was kann ich jetzt denn tun? Seitze seit 11 Stunden ohne einen fortschritt dran. habe sovieles schon ausgetestet
Danke schonmal!!!!!!
Java:
public class Main extends Application {
static Scanner scanner = new Scanner(System.in);
Button button;
TextField nameInput,vornameInput, alterInput, freieTageInput, arbeitsOrtInput, arbeitsStundenInput, matrikelNummerInput, studiengangInput;
Stage window;
TableView<Person> table;
int indexOfList;
ChoiceBox<String> typAuswahl;
public static void main(String[] args) {
launch(args);
System.out.println(" * Hauptmenue *");
System.out.println(" ________________");
System.out.println("");
System.out.println("Waehlen Sie eines der beiden Ausfuehrungarten aus:");
System.out.println(" ------------------------------------------------------------------------");
System.out.println(" (1) GUI");
System.out.println(" (2) Console ");
System.out.println("Geben Sie eine Zahl ein:");
checkint();
int w12 = scanner.nextInt();
switch (w12) {
case 1:
launch(args);
break;
case 2:
Hauptmenu();
break;
default: System.out.println("Ungueltige Eingabe; versuchen Sie es erneut:");
Hauptmenu();
break;
}
}
public static void Hauptmenu() {
System.out.println(" ");
System.out.println(" ");
System.out.println(" ________________");
System.out.println(" ");
System.out.println(" * Hauptmenue *");
System.out.println(" ________________");
System.out.println("");
System.out.println("Waehlen Sie eines der beiden Dateiformate aus:");
System.out.println(" ------------------------------------------------------------------------");
System.out.println(" (1) .CSV");
System.out.println(" (2) .DAT");
System.out.println("Geben Sie eine Zahl ein:");
checkint();
int w1 = scanner.nextInt();
switch (w1) {
case 1: System.out.println(" ");
System.out.println(" ");
System.out.println(" ________________");
System.out.println(" ");
System.out.println(" * Hauptmenue .CSV *");
System.out.println(" ________________");
System.out.println("");
System.out.println("Sie koennen hier Personen der Hochschule fuer Technik und Wirtschaft verwalten:");
System.out.println(" ------------------------------------------------------------------------");
System.out.println(" (1) Anlegen");
System.out.println(" (2) Suchen nach Arrayposition");
System.out.println(" (3) Filtern");
System.out.println(" (4) Nach Typ ausgeben");
System.out.println(" (5) Alle zeigen");
System.out.println(" (6) CSV anzeigen");
System.out.println(" (7) GUI- oberfläche");
System.out.println(" (6) Programm beenden");
System.out.println("");
System.out.println("Geben Sie eine Zahl ein:");
checkint();
int w2 = scanner.nextInt();
switch (w2) {
case 1: add();
break;
case 2: Read();
break;
case 3: ReadFilter();
break;
case 4:ReadAll();
break;
case 5:ReadAll(2);
break;
case 6:CSVReadALL();
break;
case 7:
break;
default: System.out.println("Ungueltige Eingabe; versuchen Sie es erneut:");
Hauptmenu();
break;
}
break;
case 2: System.out.println(" ");
System.out.println(" ");
System.out.println(" ________________");
System.out.println(" ");
System.out.println(" * Hauptmenue *");
System.out.println(" ________________");
System.out.println("");
System.out.println("Sie koennen hier Personen der Hochschule fuer Technik und Wirtschaft verwalten:");
System.out.println(" ------------------------------------------------------------------------");
System.out.println(" (1) Anlegen");
System.out.println(" (2) Suchen nach Arrayposition");
System.out.println(" (3) Filtern");
System.out.println(" (4) Nach Typ ausgeben");
System.out.println(" (5) Alle zeigen");
System.out.println("");
System.out.println(" (6) Programm beenden");
System.out.println("");
System.out.println("Geben Sie eine Zahl ein:");
checkint();
int w3 = scanner.nextInt();
switch (w3) {
case 1: add();
break;
case 2: Read();
break;
case 3: ReadFilter();
break;
case 4:ReadAll();
break;
case 5:ReadAll(2);
break;
case 6:CSVReadALL();
break;
default: System.out.println("Ungueltige Eingabe; versuchen Sie es erneut:");
Hauptmenu();
break;
}
break;
default: System.out.println("Ungueltige Eingabe; versuchen Sie es erneut:");
Hauptmenu();
break;
}
}
private static void CSVReadALL() {
String fileName= "personTest.csv";
File file = new File(fileName);
try{
Scanner inputSream = new Scanner(file);
while(inputSream.hasNext()){
String data = inputSream.next();
System.out.println(data);
}
inputSream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void CSVOutput() {
}
private static void add() {
System.out.println("Vorname : ");
String vorname = scanner.next();
System.out.println("Nachname : ");
String nachname = scanner.next();
System.out.println("Alter : ");
checkint();
int alter = checkintR(18,65,true);
System.out.println("Freie Wochentage : ");
checkint();
int freieTage = checkintR(1,6,true);
System.out.println("Waehlen Sie den Typ der Person aus;");
System.out.println("1 fuer Angestellte ; 2 fuer Student ; 3 fuer studentische Mitarbeiter : ");
int typ = checkintR(1,3,false);
switch(typ) {
case 1:
System.out.println("ArbeitsOrt: ");
String ort = scanner.next();
System.out.println("Arbeitsstunden pro Woche : ");
checkint();
int stunden = checkintR(1,40,true);
Person.add(new Angestellte( vorname, nachname, typ, alter , freieTage, stunden, ort ));
// Angestellte.add(new Angestellte(vorname, nachname, typ, alter , freieTage, stunden, ort));
break;
case 2:
System.out.println("Matrikelnummer : ");
checkint();
int matrikel= checkintR(11111,66666,true);
System.out.println("Studiengang : ");
String studiengang = scanner.next();
Person.add(new Student( vorname, nachname, typ, alter , freieTage, matrikel, studiengang ));
// Student.add(new Student( vorname, nachname, typ, alter , freieTage, matrikel, studiengang));
break;
case 3:
System.out.println("Matrikelnummer : ");
checkint();
int matrikel1= checkintR(11111,66666,true);
System.out.println("Studiengang : ");
String studiengang1 = scanner.next();
System.out.println("ArbeitsOrt: ");
String ort1 = scanner.next();
System.out.println("Arbeitsstunden pro Woche : ");
checkint();
int stunden1 = checkintR(1,40,true);
Person.add(new StudentischeHilfskraft( vorname, nachname, typ, alter , freieTage, matrikel1,studiengang1, stunden1, ort1 ));
// StudentischeHilfskraft.add(new StudentischeHilfskraft( vorname, nachname, typ, alter , freieTage, matrikel1,studiengang1, stunden1, ort1));
break;
}
System.out.println("");
Hauptmenu();
}
public static void Read() {
System.out.println("Index : ");
if(Person.getAnzahl() == 0){
System.out.println("keine Personen eingetragen");
Hauptmenu();
}else{
int index = checkintR(1,Person.getAnzahl(),false);
Person.read(index-1);
System.out.println("");
Hauptmenu();
}}
public static void ReadAll(int a ) {
Person.readAll();
System.out.println("");
Hauptmenu();
}
public static void ReadFilter( ) {
try {
Person.readAll();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("");
Hauptmenu();
}
public static void ReadAll() {
// Person.readAll();
Student.readAll(2);
StudentischeHilfskraft.readAll(2);
Angestellte.readAll(2);
System.out.println("");
Hauptmenu();
}
public static int checkintR(int start,int end,boolean alter) {
checkint();
int value = scanner.nextInt();
while (value < start || value > end){
if (alter) {
System.out.println("Bitte geben Sie eine Zahl zwischen "+start+" und "+end+" ein");
}else{
System.out.println("Bitte geben Sie eine Zahl zwischen "+start+" und "+end+" ein");
}
return checkintR(start,end,alter);
}
return value;
}
public static void checkint() {
while (!scanner.hasNextInt()) {
System.out.println("Bitte geben Sie nur Zahlen ein: ");
scanner.next();
}
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Verwaltung!");
//TypAuswahl
typAuswahl = new ChoiceBox<>();
typAuswahl.getItems().addAll("Typ Auswahl","Student","Studentische Hilfskraft","Angestellter");
typAuswahl.setValue("Typ Auswahl");
//Vornameame column
TableColumn<Person, String> typColumn = new TableColumn<>("Typ");
typColumn.setMinWidth(200);
typColumn.setCellValueFactory(new PropertyValueFactory<>("typ"));
//Vornameame column
TableColumn<Person, String> vornameColumn = new TableColumn<>("Vorname");
vornameColumn.setMinWidth(200);
vornameColumn.setCellValueFactory(new PropertyValueFactory<>("VorName"));
//Name column
TableColumn<Person, String> nachnameColumn = new TableColumn<>("Nachname");
nachnameColumn.setMinWidth(200);
nachnameColumn.setCellValueFactory(new PropertyValueFactory<>("NachName"));
//Alter column
TableColumn<Person, Integer> alterColumn = new TableColumn<>("Alter");
alterColumn.setMinWidth(100);
alterColumn.setCellValueFactory(new PropertyValueFactory<>("alter"));
//freieTage column
TableColumn<Person, Integer> tageColumn = new TableColumn<>("Freie Tage");
tageColumn.setMinWidth(100);
tageColumn.setCellValueFactory(new PropertyValueFactory<>("tage"));
//arbeitsOrtColumn
TableColumn<Person, Integer> arbeitsOrtColumn = new TableColumn<>("Arbeitsort");
arbeitsOrtColumn.setMinWidth(100);
arbeitsOrtColumn.setCellValueFactory(new PropertyValueFactory<>("Arbeitsort"));
//arbeitsstundenColumn column
TableColumn<Person, Integer> arbeitsstundenColumn = new TableColumn<>("Arbeitsstunden");
arbeitsstundenColumn.setMinWidth(100);
arbeitsstundenColumn.setCellValueFactory(new PropertyValueFactory<>("Arbeitsstunden"));
//IDColumn column
TableColumn<Person, Integer> IDColumn = new TableColumn<>("ID");
IDColumn.setMinWidth(100);
IDColumn.setCellValueFactory(new PropertyValueFactory<>("Arbeitsstunden"));
//matrikelnummerColumn column
TableColumn<Person, Integer> matrikelnummerColumn = new TableColumn<>("Matrikelnummer");
matrikelnummerColumn.setMinWidth(100);
matrikelnummerColumn.setCellValueFactory(new PropertyValueFactory<>("matrikelnummer"));
//arbeitsstundenColumn column
TableColumn<Person, String> studiengangColumn = new TableColumn<>("Studiengang");
studiengangColumn.setMinWidth(100);
studiengangColumn.setCellValueFactory(new PropertyValueFactory<>("studiengang"));
//Name input
vornameInput = new TextField();
vornameInput.setPromptText("Vorname ");
vornameInput.setMinWidth(100);
//Name input
nameInput = new TextField();
nameInput.setPromptText("Nachname ");
nameInput.setMinWidth(100);
//alter input
alterInput = new TextField();
alterInput.setPromptText("Alter");
//freie Tage input
freieTageInput = new TextField();
freieTageInput.setPromptText("Freie Tage");
//arbeitsort input
arbeitsOrtInput = new TextField();
arbeitsOrtInput.setPromptText("Arbeitsort");
//freie Tage input
arbeitsStundenInput= new TextField();
arbeitsStundenInput.setPromptText("arbeitsStundenInput");
//matrikelNummerInput
matrikelNummerInput = new TextField();
matrikelNummerInput.setPromptText("matrikelNummerInput");
//studiengangInput
studiengangInput = new TextField();
studiengangInput.setPromptText("studiengangInput");
//Button
Button addButton = new Button("Hinzufuegen");
addButton.setOnAction(e -> addButtonClicked() );
Button deleteButton = new Button("Loeschen");
deleteButton.setOnAction(e -> deleteButtonClicked());
HBox hBox = new HBox();
hBox.setPadding(new Insets(10,10,10,10));
hBox.setSpacing(10);
hBox.getChildren().addAll(typAuswahl,vornameInput,nameInput, alterInput, freieTageInput,arbeitsOrtInput,arbeitsStundenInput,matrikelNummerInput,studiengangInput, addButton, deleteButton);
table = new TableView<>();
table.setItems(getPerson());
table.setItems(getPerson());
table.getColumns().addAll(typColumn,vornameColumn, nachnameColumn, alterColumn, tageColumn, arbeitsOrtColumn, arbeitsstundenColumn, studiengangColumn, matrikelnummerColumn);
VBox vBox = new VBox();
vBox.getChildren().addAll(table, hBox);
Scene scene = new Scene(vBox);
window.setScene(scene);
window.show();
}
// private static List<Person> list = (List)Person.loadE("personTest.dat" );//laden aus Datei
private static List<Person> list = (List)Person.loadE("personTest.dat" );//laden aus Datei
public ObservableList<Person> getPerson(){
ObservableList<Person> person= FXCollections.observableArrayList();
int i = indexOfList;
String vorname=null;
int arbeitsort= list.indexOf(2);
String studiengang =null;
String nachname = null;
int alter=0;
int freietage=0;
int arbeitsstunden=0;
int matrikelnummer=0;
int typo=0;
// StudentischeHilfskraft studentischeHilfskraft = new StudentischeHilfskraft(vorname,nachname,typo,alter,freietage,matrikelnummer,studiengang,arbeitsstunden,"dd");
for(Person b :list){
// System.out.println(i +": "+ b.toString());
System.out.println(i +": "+StudentischeHilfskraft.getArbeitsstunden()+" List"+ StudentischeHilfskraft.getList().get(i).toString());
person.add(new Person(b.getVorName(), b.getNachName(), b.getTyp(), b.getAlter(), b.getTage()));
person.add(new StudentischeHilfskraft(b.getVorName(), b.getNachName(),1, b.getAlter(), b.getTage(),b.toString().indexOf("matrikelnummer"),"sss",i,"ss"));
// person.add(new Person(b.getVorName(), b.getNachName(), b.getTyp(), b.getAlter(), b.getTage(),b.getMatrikel(),b.getArbeitsstunden(), b.getArbeitsort());
i++;
};
/*
ObservableList<StudentischeHilfskraft> personStu= FXCollections.observableArrayList();
for(Person b3 :list){
System.out.println(i +": "+ b3.toString());
System.out.println(i +": "+ b3.toString());
person.add(new StudentischeHilfskraft(b3.getVorName(), b3.getNachName(),1, b3.getAlter(), b3.getTage(),b3.toString().indexOf("matrikelnummer"),"sss",i,"ss"));
// System.out.println(studentischeHilfskraft.getArbeitsort());
i++;
}; */
return person ;
}
//Add button clicked
public void addButtonClicked(){
/* Person person = new Person( vorname, nameInput.getText(), 1,Integer.parseInt(priceInput.getText()) , 2);
person.setVorname(nameInput.getText());
person.setNachName(nameInput.getText());
person.setAlter((int) Double.parseDouble(priceInput.getText()));
person.setTage(Integer.parseInt(quantityInput.getText())); */
//System.out.println(nameInput.getText());
if(typAuswahl.getValue()=="Student"){
if(validateAlter(alterInput.getText())&&validatefreieTage(freieTageInput.getText())){
System.out.println(nameInput.getText() + " Vorname:"+vornameInput.getText()+" Alter;"+Integer.parseInt(alterInput.getText()));
int typ=2;
int freieTage=2;
int stunden=2;
String ort="BerlinCity";
Person.add(new Angestellte(vornameInput.getText(),nameInput.getText(),typ,Integer.parseInt(alterInput.getText()),freieTage, stunden, ort ));
Angestellte.add(new Angestellte(vornameInput.getText(), nameInput.getText(), typ, Integer.parseInt(alterInput.getText()) ,stunden , stunden, ort));
// table.getItems().add(Person.get);
//table.getItems().add(person);
nameInput.clear();
alterInput.clear();
freieTageInput.clear();
}
else{
System.out.println("Fehler");
}
}
else {
System.out.println(typAuswahl.getValue());
}
}
//Delete button clicked
public void deleteButtonClicked(){
ObservableList<Person> productSelected, allPersons;
allPersons = table.getItems();
productSelected = table.getSelectionModel().getSelectedItems();
productSelected.forEach(allPersons::remove);
}
//__________________________________VAlidation
private boolean validateAlter(String text){
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(text);
if(m.find() && m.group().equals(text)){
if( (Integer.parseInt(text) >=18)&& (Integer.parseInt(text) <=110)){
return true;
}
else{
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Validierung vom Alter fehlgeschlagen");
alert.setContentText("Validierung vom Alter fehlgeschlage; Geben sie ein Alter zwischen 18 und 110 Jahren ein " +
text+ " Passt nicht in den Intervall");
alert.showAndWait();
return false;
}
}
else{
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Validierung vom Alter fehlgeschlagen");
alert.setContentText("Validierung vom Alter fehlgeschlage; Geben sie ein Alter zwischen 18 und 110 Jahren ein " +
text +"Passt nicht in den Intervall");
alert.showAndWait();
return false;
}
}
//__________________________________VAlidation
private boolean validatefreieTage(String text){
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(text);
if(m.find() && m.group().equals(text)){
if( (Integer.parseInt(text) >=0)&& (Integer.parseInt(text) <=6)){
return true;
}
else{
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("ValidateNumbverrr");
alert.setContentText("Sie können Maximal 6 freie Tage in der Woche habe und Minimal 0 " +
" Somit stimmt "+text+" nicht überein");
alert.showAndWait();
return false;
}
}
else{
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("ValidateNumbverrr");
alert.setContentText("Bitte eine Zahl eingeben "+text+" ist keine Zahl");
alert.showAndWait();
return false;
}
}
}