2つの日付の間にTableRowShorterを作成するにはどうすればよいですか?
Aug 19 2020
combobox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if(arg0.getStateChange()==ItemEvent.SELECTED) {
if(!combobox.getSelectedItem().toString().equals(items[0])) { //items[] for the items of the combobox.
DefaultTableModel table1 = (DefaultTableModel)table.getModel();
String search =combobox.getSelectedItem().toString();
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(table1);
table.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(search));
}
}
}
});
私はこのコードを使用します。コンボボックスのアイテムを選択すると、選択したアイテムでテーブルが並べ替えられます。2つ目のコンボボックスがあります。コンボボックスの名前がcombobox2で、combobox2のアイテムが「過去2か月」であるとします。
表の最初の列は日付用です。combobox2(過去2か月)の項目を選択したときに、テーブルを並べ替えたいと思います。最大2か月前の行を見たいだけです。
たとえば、文字列( "01/01/2020")を送信した場合、( "01/01/2020")があり、この日付以降の行のみを表示したいとします。
しかし、このコードでは、送信した日付しか見ることができません。私はそれをうまく説明したと思います。必要に応じて、さらにコードを共有できます。
回答
2 camickr Aug 19 2020 at 14:02
たとえば、文字列( "01/01/2020")を送信した場合、( "01/01/2020")があり、この日付以降の行のみを表示したいとします。
「日付フィルター」を使用する必要があります。
たとえば、このフィルタは特定の日付以降のすべての日付を返します。
RowFilter.dateFilter(ComparisonType.AFTER, new Date());
RowFilter
使用できる他のフィルターのAPIをお読みください。
注意:
モデルに文字列値を格納しないでください。日付を表すオブジェクトに日付を格納してから、カスタムレンダラーを使用して日付をフォーマットする必要があります。これにより、上からのフィルターが正しく機能するようになります。