The_RealMatrix
Grünschnabel
Hallo Zusammen,
lange, lange les ich hier schon im Forum und nun ist es mal an der Zeit, das auch ich mich mal zu Wort melde
Kurze Problembeschreibung:
Ich muss im Rahmen meines WInfo-Studiengangs ein Bibliotheksprogramm schreiben (Bücher, User anlegen; Bücher ausleihen/zurückbringen; User/Bücher auflisten). Soweit funktioniert auch alles.
NUR: Mit einem Klick auf einen Button öffnet sich ein neues Fenster mit einem JTable in dem alle Bücher aufgelistet sind. Da man ja auch Bücher hinzufügen kann, ändert sich diese Liste recht oft.
Ich hab das "Aktualisieren" jetzt so gelöst, das ich die Tabelle zu Beginn im Konstruktor über eine Methode FillTableBookList() fülle:
Und wenn ich dann den Button drücke wird das Fenster nur auf "visible" gesetzt:
Problematik -> Bücher werden hinzugefügt hab ich folgendermaßen gelöst:
Es ist hier ja kein richtiges "Aktualisieren" sondern nur ein Anfügen einer neuen Zeile, wenn ein neues Buch erstellt wird.
Meine Frage:
Geht das ganze nicht "einfacher" oder effektiver? Mit den zwei Methoden bookreturn_dtm.fireTableDataChanged(); und bookreturn_dtm.fireTableRowsInserted(); hab ich auch schon rumgespielt, aber ich kriegs nicht so ganz hin.
Über Hilfe würd ich mich sehr freuen.
Schönen Gruß und vielen Dank schon mal im Vorraus
Tom
lange, lange les ich hier schon im Forum und nun ist es mal an der Zeit, das auch ich mich mal zu Wort melde

Kurze Problembeschreibung:
Ich muss im Rahmen meines WInfo-Studiengangs ein Bibliotheksprogramm schreiben (Bücher, User anlegen; Bücher ausleihen/zurückbringen; User/Bücher auflisten). Soweit funktioniert auch alles.
NUR: Mit einem Klick auf einen Button öffnet sich ein neues Fenster mit einem JTable in dem alle Bücher aufgelistet sind. Da man ja auch Bücher hinzufügen kann, ändert sich diese Liste recht oft.
Ich hab das "Aktualisieren" jetzt so gelöst, das ich die Tabelle zu Beginn im Konstruktor über eine Methode FillTableBookList() fülle:
Java:
public LibraryUI() {
initComponents();
//...
FillTableBookList();
}
public void FillTableBookList() {
Database db = new Database();
try {
db.Open();
ResultSet rs = db.Select("SELECT * FROM books");
while(rs.next()){
bookreturn_dtm.addRow(new String[] { rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5) });
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
Und wenn ich dann den Button drücke wird das Fenster nur auf "visible" gesetzt:
Java:
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
BookListReturn.setLocation(500,100);
BookListReturn.pack();
BookListReturn.setVisible(true);
}
Problematik -> Bücher werden hinzugefügt hab ich folgendermaßen gelöst:
Java:
private void insertInto() {
// Nur wenn alle Felder gefüllt sind, wird das Buch eingestellt
if(bookname.getText().length() == 0 || isbn.getText().length() == 0 || author.getText().length() == 0) {
// Fehlermeldung wird ausgegeben
} else {
int status2;
// ...
try {
// Book-Objekt wird angelgt und dann in die MySQL Datenbank geschrieben
Book book1 = new Book(isbn.getText(), bookname.getText(), author.getText(), status2);
// ÄNDERUNG WIRD SOFORT IN DEN JTABLE GESCHRIEBEN!
bookreturn_dtm.addRow(new String[] { book1.GetBookId()+"",isbn.getText(),bookname.getText(),author.getText(),status2+"" });
// MESSAGE AUSGEBEN, OB ERFOLGREICH!
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
}
Es ist hier ja kein richtiges "Aktualisieren" sondern nur ein Anfügen einer neuen Zeile, wenn ein neues Buch erstellt wird.
Meine Frage:
Geht das ganze nicht "einfacher" oder effektiver? Mit den zwei Methoden bookreturn_dtm.fireTableDataChanged(); und bookreturn_dtm.fireTableRowsInserted(); hab ich auch schon rumgespielt, aber ich kriegs nicht so ganz hin.
Über Hilfe würd ich mich sehr freuen.
Schönen Gruß und vielen Dank schon mal im Vorraus

Tom
Zuletzt bearbeitet: