두 날짜 사이에 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를 읽어 보세요.

노트 :

모델에 문자열 값을 저장하면 안됩니다. 날짜를 나타내는 개체에 날짜를 저장 한 다음 사용자 지정 렌더러를 사용하여 날짜 형식을 지정해야합니다. 이렇게하면 위에서 필터가 제대로 작동 할 수 있습니다.