Jetzt habe ich eine Suche textField mit KeyReleased -Ereignis implementiert, die jTable nicht gefunden/aktualisiert, wenn ich z. B. "An" von "Andrew" eingeben, und direkt nachdem ich genau zu tippen (caseSensitive) der Name, den ich finden möchte.Implementiere Suche textField in jTabelle
Also, was ich will, ist die Filtermethode von diesem site zu implementieren, aber ich habe große Probleme. Nach unten Implementierung und Entfernen der "alten" KeyReleased-Ereignis, wenn ich etwas in Textfeld "txt_search" eingeben geschieht nichts mit jTable.
der Tabelle Mein Code von IDE (NetBeans) erzeugt wird (von fertigem Code Platte kopiert):
Table_Employee = new javax.swing.JTable();
Table_Employee.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
)
);
Table_Employee.setToolTipText("Employee info table");
Table_Employee.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
Table_Employee.getTableHeader().setReorderingAllowed(false);
Table_Employee.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
Table_EmployeeMouseClicked(evt);
}
});
Table_Employee.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
Table_EmployeeKeyPressed(evt);
}
});
jScrollPane1.setViewportView(Table_Employee);
und fügte ich diese auf meiner Fensterklasse, wo Tisch ist:
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
import net.proteanit.sql.DbUtils;
import java.awt.event.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.*;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
public class Employee_info extends javax.swing.JFrame {
Connection conn=null;
ResultSet rs=null;
PreparedStatement pst=null;
private TableRowSorter<DefaultTableModel> sorter;
/**
* Creates new form Employee_info
*/
public Employee_info() {
initComponents();
conn=javaconnect.ConnecrDb();
Update_table();
Fillcombo();
currentDate();
Table_Employee.setAutoCreateRowSorter(true);
Table_Employee.setFillsViewportHeight(true);
Table_Employee.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
DefaultTableModel model = new DefaultTableModel();
sorter = new TableRowSorter<DefaultTableModel>(model);
Table_Employee = new JTable(model);
txt_search = new JTextField();
//Whenever filterText changes, invoke newFilter.
txt_search.getDocument().addDocumentListener(
new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
newFilter();
}
public void insertUpdate(DocumentEvent e) {
newFilter();
}
public void removeUpdate(DocumentEvent e) {
newFilter();
}
});
}
private void newFilter() {
RowFilter<DefaultTableModel, Object> rf = null;
//If current expression doesn't parse, don't update.
try {
rf = RowFilter.regexFilter(txt_search.getText(), 0);
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
sorter.setRowFilter(rf);
}
I brauche wirklich Hilfe, bitte! Dies ist meine letzte Chance, weil ich wirklich die Google-Suchlösungen gemacht habe, und nichts hat sich geändert.
Bei allem Respekt, Andrew
Nur als ein zusätzlicher Zeiger auf den wahrscheinlichsten der wichtigste Unterschied: 'table.setRowSorter (sorter);', da der Code in der Frage diesen Teil vergessen hat. – Yhn
Ich kenne dieses Beispiel, aber Sie können mir helfen, mich an meine Bedürfnisse anzupassen. Zur Zeit verwende ich IDE, um jTable, textFields und so zu konstruieren. In naher Zukunft plane ich, manuell zu konstruieren. Ich bin verwirrt, wenn ich versuche, diesen Code an meinen jTable-generierten Code mit Standardmodell und so zu ändern. –
@Apopei Andrei Ionut Tut mir leid, ich weiß nicht, wie es von built_in pallete zu tun ist, es gibt Eigenschaftsfelder für jede Aktion, kein Grund auf meiner Seite, warum Java & Swing und mit GUI Editor auch, – mKorbel