두 날짜 사이에 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));
}
}
}
});
이 코드를 사용합니다. 콤보 박스의 항목을 선택하면 선택한 항목으로 테이블을 정렬합니다. 두 번째 콤보 박스가 있습니다. combobox의 이름이 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를 읽어 보세요.
노트 :
모델에 문자열 값을 저장하면 안됩니다. 날짜를 나타내는 개체에 날짜를 저장 한 다음 사용자 지정 렌더러를 사용하여 날짜 형식을 지정해야합니다. 이렇게하면 위에서 필터가 제대로 작동 할 수 있습니다.