ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
496
496
EMPFEHLEN
-
30.09.11 16:00 #1
- Registriert seit
- Jan 2010
- Beiträge
- 8
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:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
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);
Geändert von sheel (30.09.11 um 17:57 Uhr) Grund: Codetags
-
30.09.11 17:09 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Hi
packe deinen Code bitte in die Java-Tags (siehe meine Signatur). Außerdem ist der Code nicht vollständig (sondern offensichtlich unten abgeschnitten).
Was funktioniert an diesem Filter nicht? Gibt es Fehlermeldungen?Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
30.09.11 18:33 #3
- Registriert seit
- Jan 2010
- Beiträge
- 8
Hi
schon mal danke für deine Nachricht. Jo sorry hatte die HTML Tags erwischt. Nachfolgend mein Code mit den HTML Tags.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
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 Jtable_XML 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 Jtable_XML() { 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++){ System.out.println("Row: " + j+ " Column: " + i + "suchBegriff: "+suchBegriff); if(table.getValueAt(j,i).toString().contains(suchBegriff)){ System.out.println("j: " + j+ " i: " + i + "suchBegriff: "+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); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 885, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addGap(95, 95, 95) .addComponent(suchText, javax.swing.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE) .addGap(42, 42, 42)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(searchTableButton) .addGap(18, 18, 18))) .addGap(661, 661, 661))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(274, 274, 274) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(suchText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(searchTableButton) .addGap(52, 52, 52)) ); pack(); d.close(); } catch (FileNotFoundException ex) { return false; } return true; } public static void main(final String args[]) { EventQueue.invokeLater(new Runnable() { public void run() { new Jtable_XML().setVisible(true); } }); } }
Dies ist nun die vollständige Klasse.
Das Projekt besteht dann noch aus zwei weiteren Klassen:
- MyTableModel.java
- MyColumnModel.java
Und eine XML-Datei.
Der Code läuft auch wenn ich auf 'Suchen' klicke. Er markiert dann eine eventuelle Zeile, in welcher der Suchbegriff vorkommt, aber er filtert nicht die anderen Zeilen aus.
Die Java Insel habe ich, bin jedoch leider wirklich nicht mehr weitergekommen.
Wäre weiterhin dankbar um Hilfe und Tipps.
Gruss
Bruno
-
06.10.11 17:25 #4
- Registriert seit
- Jan 2010
- Beiträge
- 8
Leider habe ich keine Hilfe mehr erhalten. Konnte es aber nun selber lösen.
Ähnliche Themen
-
JTable Filtern
Von Java_Bruno im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 24.09.11, 16:57 -
JTable filtern
Von javama im Forum JavaAntworten: 1Letzter Beitrag: 21.02.11, 16:16 -
JTable sortieren/filtern, dann getSelectedRows()
Von darkmagic2002 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 01.09.09, 20:30 -
dynamisches Suchfeld (ala Thunderbird) / Filtern einer JTable mit sehr vielen Daten
Von shutdown im Forum JavaAntworten: 4Letzter Beitrag: 03.06.07, 16:39 -
JTable Column (Spalten ausblenden/filtern?)
Von sportingt im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 10.11.05, 10:15





Zitieren
Login





