Как использовать JCalendar для выбора элемента моего массива?

У меня есть трехмерный массив, содержащий 38 лет, 12 месяцев и 31 запись для каждого месяца (независимо от того, сколько дней в этом месяце). Вот так: array[38][12][31]. У меня также есть JCalendar, который сейчас ничего не делает, кроме красивого вида, а внизу у JCalendar есть кнопка. Как мне сделать так, чтобы я мог выбрать дату в календаре, затем нажать кнопку, и она вернет элемент моего массива, который будет соответствовать этой дате?

Что-то типа

if(buttonPressed){
    year = chosenYear - 1975;
    month = chosenMonth;
    day = chosenDay;

    System.out.print(array[year][month][day]);
}

Спасибо, парни.


person JmJ    schedule 20.05.2013    source источник
comment
1) пожалуйста, какой из JCalendars   -  person mKorbel    schedule 20.05.2013
comment
2) (если от Kai Toedter) для лучшей помощи скорее опубликуйте SSCCE, короткий, работоспособный, компилируемый   -  person mKorbel    schedule 20.05.2013
comment
3) поместите (все хорошие JCalendars имеют класс для XxxCellEditor) все JCalendars в JTable, тогда вы можете забыть для любого типа массивов, XxxTableModel возвращает любые изменения или значения из других мест   -  person mKorbel    schedule 20.05.2013


Ответы (1)


Вы можете получить выбранный Date в PropertyChangeListener, как показано здесь. Если у вас есть date, вы можете получить год, месяц и день из Calendar:

Calendar c = Calendar.getInstance();
c.setTime(date);
int y = c.get(Calendar.YEAR);
int m = c.get(Calendar.MONTH);
int d = c.get(Calendar.DAY_OF_MONTH);

Calendar.MONTH уже отсчитывается от нуля, а Calendar.DAY_OF_MONTH — нет; и вам нужно будет настроить год на ваш базовый уровень.

person trashgod    schedule 20.05.2013
comment
Вы определенно направили меня на правильный путь, спасибо! В настоящее время я пытаюсь установить целые числа для выбранной даты, как вы продемонстрировали, но получаю сообщение об ошибке incompatible types. Required: JCalendar. Found: Calendar Есть идеи? :) - person JmJ; 20.05.2013
comment
Вы должны разыграть Date date = (Date) e.getNewValue(). - person Catalina Island; 20.05.2013
comment
Он живой! Большое спасибо вам обоим! @КаталинаАйленд - person JmJ; 20.05.2013