Hallo,
ich habe ein Problem und komme momentan nicht weiter. Ich habe eine JTable, wo ich per Knopfdruck sämtliche Feiertage in Deutschland laden kann.
Das mache ich über einen Button mit folgendem Code, was auch funktioniert:
Jetzt habe ich unter der Tabelle ein Textfeld und wenn man dort etwas eingibt, möchte ich, dass nur das dann in der Tabelle steht. Also eine klassische Suchfunktion. Im Internet und in Foren finde ich aber nur Code dafür, wo der ganze Tabelleninhalt aus einem Array kommt, was vorgegeben ist. Wie diesen Code hier zum Beispiel: (Quelle: Stackoverflow.com)
Wie kann ich so etwas für meine Tabelle umsetzen? Ich habe die Daten ja schon per SQL Befehl aus meiner Datenbank geholt. Und wenn ich wie im obrigen Code die Arrays leer lasse, ist die Tabelle bei mir natürlich leer :/
Bitte um Hilfe, ist wirklich dringend.
LG
ich habe ein Problem und komme momentan nicht weiter. Ich habe eine JTable, wo ich per Knopfdruck sämtliche Feiertage in Deutschland laden kann.
Das mache ich über einen Button mit folgendem Code, was auch funktioniert:
Java:
btnLaden = new JButton("Laden");
btnLaden.setBounds(10, 344, 89, 23);
btnLaden.addActionListener(new ActionListener() {
// Daten aus der Datenbanktabelle Feiertag holen, um diese in die JTable zu schreiben, sobald der Button betätigt wird
public void actionPerformed(ActionEvent arg0) {
try{
String query="select * from FEIERTAG";
Statement stmt = con.prepareStatement(query);
ResultSet rs = stmt.executeQuery(query);
tableFeiertage.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
e.printStackTrace();
System.out.println("fehler");
}
}
});
contentPane.add(btnLaden);
Jetzt habe ich unter der Tabelle ein Textfeld und wenn man dort etwas eingibt, möchte ich, dass nur das dann in der Tabelle steht. Also eine klassische Suchfunktion. Im Internet und in Foren finde ich aber nur Code dafür, wo der ganze Tabelleninhalt aus einem Array kommt, was vorgegeben ist. Wie diesen Code hier zum Beispiel: (Quelle: Stackoverflow.com)
Java:
public class TestTableSortFilter extends JPanel {
private String[] columnNames
= {"Country", "Capital", "Population in Millions", "Democracy"};
private Object[][] data = {
{"USA", "Washington DC", 280, true},
{"Canada", "Ottawa", 32, true},
{"United Kingdom", "London", 60, true},
{"Germany", "Berlin", 83, true},
{"France", "Paris", 60, true},
{"Norway", "Oslo", 4.5, true},
{"India", "New Delhi", 1046, true}
};
private DefaultTableModel model = new DefaultTableModel(data, columnNames);
private JTable jTable = new JTable(model);
private TableRowSorter<TableModel> rowSorter
= new TableRowSorter<>(jTable.getModel());
private JTextField jtfFilter = new JTextField();
private JButton jbtFilter = new JButton("Filter");
public TestTableSortFilter() {
jTable.setRowSorter(rowSorter);
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Specify a word to match:"),
BorderLayout.WEST);
panel.add(jtfFilter, BorderLayout.CENTER);
setLayout(new BorderLayout());
add(panel, BorderLayout.SOUTH);
add(new JScrollPane(jTable), BorderLayout.CENTER);
jtfFilter.getDocument().addDocumentListener(new DocumentListener(){
@Override
public void insertUpdate(DocumentEvent e) {
String text = jtfFilter.getText();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
@Override
public void removeUpdate(DocumentEvent e) {
String text = jtfFilter.getText();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
@Override
public void changedUpdate(DocumentEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
}
Wie kann ich so etwas für meine Tabelle umsetzen? Ich habe die Daten ja schon per SQL Befehl aus meiner Datenbank geholt. Und wenn ich wie im obrigen Code die Arrays leer lasse, ist die Tabelle bei mir natürlich leer :/
Bitte um Hilfe, ist wirklich dringend.
LG