これでKeyReleasedイベントで実装された検索textFieldが見つかりませんでした。たとえば、 "Andrew"などの入力を開始するとjTableが更新されました。 caseSensitive)は私が探したい名前です。検索textFieldをjTableに実装
だから、私はこのsiteからFilteringメソッドを実装したいが、大きな問題がある。以下の実装と "古い" KeyReleasedイベントを削除した後、テキストフィールド "txt_search"に何かを入力すると、jTableで何も起こりません。
IDE(NetBeansの)によって生成されたテーブルの私のコードは、(カスタマイズコードパネルからコピー)されます。
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);
と表がある場合、私は私のパネルクラスでこれを追加しました:
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本当に助けが必要です。これは私の最後のチャンスです。私は実際にGoogleの検索ソリューションを作ったので、何も変わりませんでした。
、 アンドリュー
最も重要な違いの可能性が最も高い追加ポインタと同じように、 'table.setRowSorter(ソーター);'という質問のコードがその部分を忘れてしまったためです。 – Yhn
私はこの例を知っていますが、私のニーズに適応するのに役立ちます。今のところ私はIDEを使ってjTable、textFields、stuffを構築しています。近い将来、私は手動で構築する予定です。私は、jTableのコードをデフォルトのモデルやもので生成したコードに適応しようとすると、混乱します。 –
@ApopeiアンドレイはIonutはごめんなさいは – mKorbel