Java_Bruno
Grünschnabel
Hallo zusammen
Obwohl ich schon mehrere Tage damit verbracht habe, komme ich einfach nicht weiter. Wahrscheinlich habe ich irgendwo den falschen Ansatz aber weiss echt nicht wo.
Ich habe eine JTable erstellt, welche durch ein XML Dokument befüllt wird. Nun möchte ich über ein Textfeld einen Zeichenkettenausdruck eingeben und danach sollte die Tabelle nach diesem Ausdruck durchsucht werden.
Ich habe es zwar hingekriegt, dass die erste Zeile in welcher der Begriff vorkommt markiert wird, aber ein Filter wird nicht gesetzt.
Könnt Ihr mir weiterhelfen, bevor ich noch mit dem Ding ganz verzweifle?
Bin für jede Hilfe dankbar.
Gruss
Bruno
Hier ist mal der Java Quellcode ohne GUI Teil:
Obwohl ich schon mehrere Tage damit verbracht habe, komme ich einfach nicht weiter. Wahrscheinlich habe ich irgendwo den falschen Ansatz aber weiss echt nicht wo.
Ich habe eine JTable erstellt, welche durch ein XML Dokument befüllt wird. Nun möchte ich über ein Textfeld einen Zeichenkettenausdruck eingeben und danach sollte die Tabelle nach diesem Ausdruck durchsucht werden.
Ich habe es zwar hingekriegt, dass die erste Zeile in welcher der Begriff vorkommt markiert wird, aber ein Filter wird nicht gesetzt.
Könnt Ihr mir weiterhelfen, bevor ich noch mit dem Ding ganz verzweifle?
Bin für jede Hilfe dankbar.
Gruss
Bruno
Hier ist mal der Java Quellcode ohne GUI Teil:
Java:
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import java.util.ArrayList;
import java.util.regex.PatternSyntaxException;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class TableSave extends JFrame {
private String filename = "D:/Bruno/Workspace/AddressBook01/Adressdatenbank 1.xml";
private JTable table;
private MyTableModel tableModel;
private MyColumnModel columnModel;
private TableRowSorter<TableModel> sorter;
private JButton searchTableButton;
private JLabel jLabel1;
private JLabel suchLabel;
private JTextField suchText;
private JScrollPane jScrollPane1;
private String defaultAdressdatei;
public TableSave() {
super("TableSaveColumns");
jLabel1 = new JLabel();
jScrollPane1 = new JScrollPane();
searchTableButton = new JButton();
suchLabel = new JLabel();
suchText = new JTextField();
setTitle("MAD");
jLabel1.setText("Adressdatenbank");
suchText.setText("SuchText");
suchLabel.setText("Suchbegriff");
searchTableButton.setText("Suchen");
defaultAdressdatei = "D:/Bruno/Workspace/AddressBook01/Adressdatenbank 1.xml";
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
tableModel = new MyTableModel();
table = new JTable(tableModel);
table.setAutoCreateRowSorter(true);
sorter = new TableRowSorter<TableModel>(tableModel);
table.setModel(tableModel);
getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
columnModel = new MyColumnModel();
table.setColumnModel(columnModel);
tableModel.addRow(new Object[]{"Name", "Vorname", "Strasse", "Nummer", "PLZ", "Ort", "Kennzeichnung", "Gruppe"});
loadTable();
addWindowListener(new WindowAdapter() {
public void windowClosing(final WindowEvent evt) {
dispose();
}
});
searchTableButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent evt) {
String text = suchText.getText();
suche(text);
}
private void suche(String suchBegriff){
for(int i=0; i<table.getColumnCount(); i++){
for(int j=0; j < table.getRowCount();j++){
if(table.getValueAt(j,i).toString().contains(suchBegriff)){
table.setRowSelectionInterval(j,j);
sorter.setRowFilter(RowFilter.regexFilter(suchBegriff));
break;
}
}
}
}
});
}
private boolean loadTable() {
try {
String filename = "D:/Bruno/Workspace/AddressBook01/Adressdatenbank 1.xml";
XMLDecoder d = new XMLDecoder(new BufferedInputStream(new FileInputStream(filename)));
tableModel = (MyTableModel) d.readObject();
table.setModel(tableModel);
columnModel = (MyColumnModel) d.readObject();
table.setColumnModel(columnModel);
jScrollPane1.setViewportView(table);
Zuletzt bearbeitet von einem Moderator: