年齢ソート
TableRowSorter に Comparator を設定して,年齢・生年月日で正しくソートできるようにした。 |
plugin/PatientSearchImpl.java
private void initComponents() { ・ ・ TableRowSortersorter = new TableRowSorter (tableModel) { // ASCENDING -> DESENDING -> 初期状態 と切り替える @Override public void toggleSortOrder(int column) { if(column >= 0 && column < getModelWrapper().getColumnCount() && isSortable(column)) { List keys = new ArrayList (getSortKeys()); if(!keys.isEmpty()) { SortKey sortKey = keys.get(0); if(sortKey.getColumn() == column && sortKey.getSortOrder() == SortOrder.DESCENDING) { setSortKeys(null); return; } } } super.toggleSortOrder(column); } }; // 生年月日コラムに comparator を設定「32.10 歳(S60-01-01)」というのをソートできるようにする sorter.setComparator(AGE_COLUMN, new Comparator(){ @Override public int compare(Object o1, Object o2) { String birthday1; String birthday2; if (ageDisplay) { birthday1 = ModelUtils.getMmlBirthdayFromAge((String)o1); birthday2 = ModelUtils.getMmlBirthdayFromAge((String)o2); return birthday2.compareTo(birthday1); } else { birthday1 = (String)o1; birthday2 = (String)o2; return birthday1.compareTo(birthday2); } } }); table.setRowSorter(sorter);
util/ModelUtils.java
/** * 年齢付きの生年月日「32.10 歳 (S50-01-01)」形式から mmlBirthday を返す * @param birthdayWithAge * @return */ public static String getMmlBirthdayFromAge(String birthdayWithAge) { String[] s = birthdayWithAge.split("[()]"); return toSeireki(s[1]); }
« 初回実施月日の自動入力 | トップページ | Mac の JPopupMenu の不具合の回避(2) »
「OpenDolphin」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)