Swing/CalendarViewTable のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CalendarViewTable へ行く。
- 1 (2018-01-29 (月) 15:00:50)
- 2 (2018-01-29 (月) 16:16:31)
- 3 (2018-01-30 (火) 13:10:45)
- 4 (2018-02-01 (木) 20:21:48)
- 5 (2018-02-02 (金) 17:40:26)
- 6 (2018-02-02 (金) 20:11:40)
- 7 (2018-02-05 (月) 16:07:58)
- 8 (2018-02-15 (木) 14:23:42)
- 9 (2018-03-02 (金) 17:44:10)
- 10 (2018-03-13 (火) 16:29:32)
- 11 (2020-03-17 (火) 18:32:28)
- 12 (2021-09-24 (金) 14:51:03)
- 13 (2024-03-01 (金) 19:11:43)
- 14 (2024-09-05 (木) 20:43:02)
- category: swing folder: CalendarViewTable title: JTableにLocaleを考慮したLocalDateを適用してカレンダーを表示する tags: [JTable, LocalDate, Locale] author: aterai pubdate: 2018-01-29T14:57:32+09:00 description: JTableに週の最初の曜日がLocaleに応じて変化するカレンダーを表示します。 image: https://drive.google.com/uc?export=view&id=1jXZtiYFaA5ABWsdaRBnPUKqS2_VBDkFqQA
概要
JTable
に週の最初の曜日がLocale
に応じて変化するカレンダーを表示します。
Screenshot
Advertisement
サンプルコード
class CalendarViewTableModel<T extends LocalDate> extends DefaultTableModel {
private final LocalDate startDate;
private final WeekFields weekFields = WeekFields.of(Locale.getDefault());
protected CalendarViewTableModel(T date) {
super();
LocalDate firstDayOfMonth = YearMonth.from(date).atDay(1);
int dowv = firstDayOfMonth.get(weekFields.dayOfWeek()) - 1;
startDate = firstDayOfMonth.minusDays(dowv);
}
@Override public Class<?> getColumnClass(int column) {
return LocalDate.class;
}
@Override public String getColumnName(int column) {
return weekFields.getFirstDayOfWeek().plus(column)
.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.getDefault());
}
@Override public int getRowCount() {
return 6;
}
@Override public int getColumnCount() {
return 7;
}
@Override public Object getValueAt(int row, int column) {
return startDate.plusDays(row * getColumnCount() + column);
}
@Override public boolean isCellEditable(int row, int column) {
return false;
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、モデルにJava 8
からjava.time
パッケージに追加されたLocalDate
を使用し、JTable
に月のカレンダーを表示しています。
- WeekFields#getFirstDayOfWeek()メソッドで
Locale
に応じた週の最初の曜日を取得して、JTable
の0
列目を設定- 例: フランスと
ISO-8601
標準では月曜日が週の最初の曜日になる"$JAVA_HOME/bin/java" -Duser.language=fr -jar example.jar
- 例: フランスと