Hallo zusammen
In einem Java Programm von mir habe ich ein Problem, welches ich bisher nicht lösen konnte und hoffe auf Eure Hilfe.
Ich habe ein Programm erstellt, welches Adressen in einer Textdatei verwaltet. Wenn ich eine Adressdatenbank (maximal 4 verschiedene Adressdatenbanken können erstellt werden), und diese nach einem Begriff durchsuchen lassen will, passiert nichts und es wird nicht nach dem Begriff gesucht. Ich vermute es liegt daran, dass ich den TableRowSorter falsch verwende oder verwendet habe.
Kann mir jemand von Euch helfen wie ich das lösen kann/muss?
Grüsse
Bruno
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.PatternSyntaxException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class MyAdressDatabase extends javax.swing.JFrame {
public MyAdressDatabase() {
initComponents();
}
private void initComponents() {
final TableRowSorter sorter = new TableRowSorter ();
jLabel1 = new javax.swing.JLabel();
jComboBox1 = new javax.swing.JComboBox();
jInternalFrame1 = new javax.swing.JInternalFrame();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
loadTableButton = new javax.swing.JButton();
delRowButton = new javax.swing.JButton();
searchTableButton = new javax.swing.JButton();
suchLabel = new javax.swing.JLabel();
suchText = new javax.swing.JTextField();
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT\_ON\_CLOSE);
setTitle("MAD MeineAdressenDatenbank");
jLabel1.setText("Adressdatenbank");
suchText.setText("SuchText");
suchLabel.setText("Suchbegriff");
loadTableButton.setText("Neue Adresse");
delRowButton.setText("Zeile löschen");
searchTableButton.setText("Suchen");
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Adressdatenbank 1", "Adressdatenbank 2", "Adressdatenbank 4", "Adressdatenbank 5" }));
delRowButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
delRowButtonActionPerformed(evt);
}
private void delRowButtonActionPerformed(java.awt.event.ActionEvent evt)
{
int zeile = jTable1.getSelectedRow(), spalte = 0;
TableCellEditor cellEditor = jTable1.getCellEditor();
boolean stopped = true;
if (cellEditor != null) {
stopped = cellEditor.stopCellEditing();
}
if (zeile ==-1) {
JOptionPane.showMessageDialog(null,
"Keine Zeile ausgewählt", "Fehlermeldung",
JOptionPane.ERROR\_MESSAGE);
} else {
if (stopped) {
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.removeRow(zeile);
} }
}
});
searchTableButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
System.out.println("\*\*\*\*\*SUCHEN\*\*\*\*");
suchTextActionPerformed(evt);
}
private void suchTextActionPerformed(ActionEvent evt) {
String text = suchText.getText () ;
System.out.println("\*\*\*SUCHEN:\*\*\*"+text);
if ( text.length () == 0 ) {sorter.setRowFilter ( null );
} else {
System.out.println(sorter);
try {sorter.setRowFilter (RowFilter.regexFilter ( text ));
} catch ( PatternSyntaxException pse ) {
System.err.println ( "Bad regex pattern" ) ;
}
}
}
});
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
loadTableButtonActionPerformed(evt);
}
private void loadTableButtonActionPerformed(java.awt.event.ActionEvent evt)
{
DefaultTableModel deft=(DefaultTableModel)jTable1.getModel();
String selectedItem = (String)jComboBox1.getSelectedItem();
String Adressdatei = "D:/"+selectedItem+".txt";
try
{
FileReader fr=new FileReader(Adressdatei);
BufferedReader br=new BufferedReader(fr);
String zeile;
while((zeile=br.readLine())!=null)
{
String[] teile=zeile.split("#");
deft.addRow(new Object[]{teile[0],teile[1],teile[2],teile[3],});
}
fr.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,
"Fehler: "+e.getMessage(), "Fehlermeldung",
JOptionPane.ERROR\_MESSAGE);
}
}
private void jComboBox1ActionPerformed(ActionEvent evt) {
String selectedItem = (String)jComboBox1.getSelectedItem();
JOptionPane.showMessageDialog(
null,"Ihre Wahl: " + selectedItem, "Information",
JOptionPane.INFORMATION\_MESSAGE);
}
});
jTable1.setAutoCreateRowSorter(true);
jTable1.setRowSorter (sorter) ;
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO\_RESIZE\_ALL\_COLUMNS);
jScrollPane1.setViewportView(jTable1);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {},
new String [] {
"Name", "Vorname", "Strasse", "Ort"
}
));
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(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT\_SIZE, 615, Short.MAX\_VALUE)
.addComponent(jComboBox1, 0, 615, Short.MAX\_VALUE)))
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT\_SIZE, 607, Short.MAX\_VALUE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(delRowButton, javax.swing.GroupLayout.PREFERRED\_SIZE, javax.swing.GroupLayout.DEFAULT\_SIZE, javax.swing.GroupLayout.PREFERRED\_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 74, Short.MAX\_VALUE)
.addComponent(searchTableButton)
.addGap(58, 58, 58)
.addComponent(loadTableButton, javax.swing.GroupLayout.PREFERRED\_SIZE, 164, javax.swing.GroupLayout.PREFERRED\_SIZE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(suchText, javax.swing.GroupLayout.DEFAULT\_SIZE, 615, Short.MAX\_VALUE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(suchLabel, javax.swing.GroupLayout.DEFAULT\_SIZE, 615, Short.MAX\_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED\_SIZE, javax.swing.GroupLayout.DEFAULT\_SIZE, javax.swing.GroupLayout.PREFERRED\_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(suchLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(suchText, javax.swing.GroupLayout.PREFERRED\_SIZE, javax.swing.GroupLayout.DEFAULT\_SIZE, javax.swing.GroupLayout.PREFERRED\_SIZE)
.addGap(51, 51, 51)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED\_SIZE, 108, javax.swing.GroupLayout.PREFERRED\_SIZE)
.addGap(49, 49, 49)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(delRowButton, javax.swing.GroupLayout.PREFERRED\_SIZE, javax.swing.GroupLayout.DEFAULT\_SIZE, javax.swing.GroupLayout.PREFERRED\_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(loadTableButton)
.addComponent(searchTableButton)))
.addGap(57, 57, 57))
);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyAdressDatabase().setVisible(true);
}
});
}
private javax.swing.JButton loadTableButton;
private javax.swing.JButton searchTableButton;
private javax.swing.JButton delRowButton;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel suchLabel;
private javax.swing.JTextField suchText;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}