年齢ソート
|
TableRowSorter に Comparator を設定して,年齢・生年月日で正しくソートできるようにした。 |
plugin/PatientSearchImpl.java
private void initComponents() {
・
・
TableRowSorter sorter = 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」カテゴリの記事
- OpenDolphin: Java 25 / WildFly 38 への移行(2025.11.09)
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)



