年齢ソート
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」カテゴリの記事
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)
- IME on/off の切り替え(2024.09.03)