コンストラクタで呼び出していますRowFilter.regexFilter(filterTF.getText(), 0);
。filterTF からテキストUserPage_Admin()
を読み取る方法。次のように、テキストの送信 (クリック) 時に呼び出される に割り当てられたアクション イベント リスナーから呼び出す必要があると思います。JButton
submitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = filterText.getText();
if (text.length() == 0) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(RowFilter.regexFilter(text, 0));
}
}
});
ユーザー キー タイプ イベントでフィルタリングを使用する場合は、入力フィルター文字列を取得するテキスト フィールドにキー リスナーを追加します。
filterTxtFeild.addKeyListener(new KeyAdapter() {
public void keykeyReleased(KeyEvent evt) {
// on each key type event filter.
// put your filter code as submit button
}
});
ただし、以下のコメントで示唆されているように、Swing テキスト コンポーネントを操作するには、Document.addDocumentListener(DocumentListener)
. Swing テキスト コンポーネントは、Documentを使用してそのコンテンツを表します。ドキュメント イベントは、ドキュメントの内容が何らかの形で変更されたときに発生します。ドキュメント リスナーを次のように追加します。
filterTxtFeild.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
// put your filter code here upon data insertion
}
@Override
public void removeUpdate(DocumentEvent e)
{
//put your filter code here upon data removal
}
@Override
public void changedUpdate(DocumentEvent e) {}
});
編集: DocumentListener が望ましいのはなぜですか?
データ ソースでの入力の検証が必要な場合、KeyEvent
データのフィルター処理中に使用すると、ユーザーのキーストロークが反映されず、入力イベントがデータ ソースによって処理される前にリスナーに送信されます。を入力したいときuser name
に、誰かが のようなテキストを入力したとします"$%^&"
。このような無効な入力でKeyEvent
は、データ ソースに有効な変更が加えられていなくても、引き続き発生します。ただし、DocumentListeners
データ ソースに有効な変更が加えられた場合にのみ通知されます。データ入力コンポーネントは、validator
がリッスンできるイベントを生成します。テキスト コンポーネントの内容を 内から変更してはasynchronously
なりません。その場合、プログラムはデッドロックする可能性があります。DocumentListener