Hallo,
folgendes Problem:
Ich habe:
Tabelle + DefaultTableModel,
2x RadioButton, mit denen der Filter verändert wird
ein RefreshButton, der die Tabelle aktualisieren soll.
Die Daten stammen aus einer Datenbank. Wenn die Tabelle nun geöffnet ist und in dieser Zeit werden neue Daten in die Datenbank eingetragen, dann soll per Button die Tabelle aktualisiert werden.
Folgendes würde funktionieren, allerdings sind so die zuvor gesetzten Filter nicht gesetzt, was ich aber will
:
dispose(); //Schließen
Class.Button.doClick(); // Klick um simulieren, welcher das ganze JFrame neu erstellt
Wenn ich nun auf den Button: "ausRefresh" klicke, dann funktioniert dies auch, ABER nur, wenn "allUsers" geklickt ist und NICHT, wenn 'notAllUser' ausgewählt ist.
Button, zum Aktualisieren:
Methode, die das Model erstellt/liefert:
'allUsers' und 'notAllUsers' sind in der selben Gruppe.
RadioButton, alle Benutzer:
RadioButton, einzelne Personen:
PS: wie kann man beiträge editieren?
folgendes Problem:
Ich habe:
Tabelle + DefaultTableModel,
2x RadioButton, mit denen der Filter verändert wird
ein RefreshButton, der die Tabelle aktualisieren soll.
Die Daten stammen aus einer Datenbank. Wenn die Tabelle nun geöffnet ist und in dieser Zeit werden neue Daten in die Datenbank eingetragen, dann soll per Button die Tabelle aktualisiert werden.
Folgendes würde funktionieren, allerdings sind so die zuvor gesetzten Filter nicht gesetzt, was ich aber will
dispose(); //Schließen
Class.Button.doClick(); // Klick um simulieren, welcher das ganze JFrame neu erstellt
Wenn ich nun auf den Button: "ausRefresh" klicke, dann funktioniert dies auch, ABER nur, wenn "allUsers" geklickt ist und NICHT, wenn 'notAllUser' ausgewählt ist.
Button, zum Aktualisieren:
Java:
ausRefresh.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//dispose(); //War meine erste Lösung,
//Anfragi.anfragi_tabelle.doClick(); //Damit hats geklappt
meinModel = getModel();
tabelle.setModel(meinModel);
tabelle.getColumnModel().getColumn(2)
.setCellRenderer(new MyCellRenderer());
tabelle.setFillsViewportHeight(true); //
setFavSize(); // Legt Spaltenbreiten fest
}
});
Methode, die das Model erstellt/liefert:
Java:
public DefaultTableModel getModel() {
DefaultTableModel model;
overviewVer = new Verbindung();
ResultSet rs3 = overviewVer.getResultSet("Select * From Anfragen");
Vector<String> columnNames = new Vector<String>();
columnNames.addElement("AnfID");
columnNames.addElement("Klient");
columnNames.addElement("Problem");
columnNames.addElement("Eingang");
columnNames.addElement("Bearbeiter");
columnNames.addElement("Lösung");
columnNames.addElement("Abschluss");
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
Vector<Object> c;
try {
while (rs3.next()) {
c = new Vector<Object>();
for (int i = 1; i <= 7; i++) {
c.addElement(rs3.getObject(i));
}
data.addElement(c);
}
} catch (SQLException e) {
}
model = new DefaultTableModel(data, columnNames) {
private static final long serialVersionUID = 1L;
// Standard Methode wird überschrieben, sodass die Zellen nicht mehr
// Editierbar sind
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
return model;
}
'allUsers' und 'notAllUsers' sind in der selben Gruppe.
RadioButton, alle Benutzer:
Java:
allUsers.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
einzelUser.setEnabled(false);
/*
* Filter 3: lässt alles durch
*/
filters.set(2, RowFilter.regexFilter("", 1));
filter = RowFilter.andFilter(filters);
rowSorter.setRowFilter(filter);
}
});
RadioButton, einzelne Personen:
Java:
notAllUsers.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
einzelUser.setEnabled(true);
String zeichen = "";
String[] splitName = einzelUser.getSelectedItem().toString()
.split(",");
for (int i = 0; i < benutzer.length; i++) {
if (benutzer[i][0].equalsIgnoreCase(splitName[0])
&& benutzer[i][1].equalsIgnoreCase(splitName[1]
.trim())) {
zeichen = benutzer[i][2];
}
}
/*
* Filter 3: Filtert benutzer
*/
filters.set(2, RowFilter.regexFilter(zeichen, 1));
filter = RowFilter.andFilter(filters);
rowSorter.setRowFilter(filter);
}
});
PS: wie kann man beiträge editieren?