Swing/CalendarWithWeekNumbers のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CalendarWithWeekNumbers へ行く。
- 1 (2025-10-27 (月) 03:24:59)
- category: swing folder: CalendarWithWeekNumbers title: JListで週番号を表示するカレンダーを作成する tags: [JList, JScrollPane, Calendar] author: aterai pubdate: 2025-10-27T03:22:24+09:00 description: JListを使用して週番号を表示し、JScrollPaneの行ヘッダーとして配置します。 image: https://drive.google.com/uc?id=1o2DCkEDSE31CKsH78xnXfssxqKn4jEfm
Summary
JListを使用して週番号を表示し、JScrollPaneの行ヘッダーとして配置します。
Screenshot

Advertisement
Source Code Examples
class WeekNumberListModel extends AbstractListModel<Integer> {
private final WeekFields weekFields = WeekFields.of(Locale.getDefault());
private final LocalDate firstDayOfMonth;
protected WeekNumberListModel(LocalDate date) {
super();
firstDayOfMonth = YearMonth.from(date).atDay(1);
}
@Override public int getSize() {
return CalendarViewListModel.ROW_COUNT;
}
@Override public Integer getElementAt(int index) {
return firstDayOfMonth.plusWeeks(index).get(weekFields.weekOfWeekBasedYear());
}
}
View in GitHub: Java, KotlinDescription
- セルの高さを月カレンダー本体と同じに設定した
JListを週番号表示用に作成- 週番号表示用
JListのセル背景色は週ヘッダーのセル背景色と同じになるよう設定
- 週番号表示用
AbstractListModel<Integer>#getElementAt(int index)をオーバーライドして週番号を返すListModelを作成index行目の週番号(暦週の基準年の何週目か)は月の初日にindex週を足して取得したLocalDateからWeekFields.of(Locale).weekOfWeekBasedYear()で取得
JScrollPane#setRowHeaderView(...)で週番号表示用JListを月カレンダーの左の行ヘッダーに配置- 表示する月の切り替えが発生すると月カレンダーの
ListModel<LocalDate>更新と同様に週番号表示用JListのListModel<Integer>も入れ替えて更新する
- 表示する月の切り替えが発生すると月カレンダーの