Как сделать календарь в javafx
Перейти к содержимому

Как сделать календарь в javafx

  • автор:

Календарь в Java

Запомни, что в программировании очень часто начинается нумерация с 0, а не 1.

– user178191

3 авг 2015 в 10:30

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Потому что 7 — это значение константы AUGUST . Нумерация идет с нуля ( JANUARY — 0)

Отслеживать

ответ дан 3 авг 2015 в 10:28

4,179 1 1 золотой знак 27 27 серебряных знаков 41 41 бронзовый знак

Я так и подумал. Но число месяца выводится верно, год тоже, а что же месяц так?

3 авг 2015 в 10:43

Возможно, Вам будет полезен этот вопрос: Why is January month 0 in Java Calendar?. Некоторые утверждают, что это из-за C API, где месяц начинался с нуля. Другие — что года/дни имеют числовой формат, а месяцы — преимущественно строковый.

JavaFX 8 DatePicker в приложении Swing

В этой статье показан пример приложения Java SE 8 Swing, использующего DatePicker управления JavaFX 8 DatePicker .

DatePicker управления DatePicker позволяет пользователю вводить дату в виде текста или выбирать дату во всплывающем календаре. В этом примере используется Swing JFrame с элементами управления FX. Для встраивания содержимого FX в приложение javafx.embed.swing пакет javafx.embed.swing предоставляет класс JFXPanel .

Приложение берет введенную дату из средства выбора даты и проверяет, находится ли оно в выбранном пользователем диапазоне дат (от и до даты) из двух средств выбора даты. Проверка даты выбора даты включает в себя:

  • Дата от меньше даты
  • Даты не из будущего
  • Дата ввода находится в пределах от и до даты (включая)

Недопустимые или действительные сообщения отображаются в диалоговых окнах FX Alert .

На следующих двух FXPanel экрана показано приложение с JFrame и встроенными элементами управления FX ( FXPanel с DatePicker , DatePicker и Button ) и DatePicker календарем DatePicker соответственно.

FX контролирует в Swing JFrame

FX контролирует в Swing JFrame

FX DatePicker с всплывающим календарем

FX DatePicker с всплывающим календарем

1.1. Исходный код

Исходный код для этого примера FXDatePickerInSwingExample.java доступен для загрузки по ссылке, приведенной в конце этой статьи. Обратите внимание, что Java SE 8 требуется для компиляции и запуска кода. Java SE 8 включает в себя JavaFX 8.

2. Описание приложения

Приложение Java Swing FXDatePickerInSwingExample запускается из метода main() программы Java SE в потоке диспетчеризации событий следующим образом:

SwingUtilities.invokeLater(() -> < new FXDatePickerInSwingExample().initAndShowGUI();

Метод initAndShowGUI() отображает Swing JFrame со встроенными в него элементами управления JavaFX. Следующий фрагмент кода показывает конструкцию JFrame :

JFrame frame = new JFrame( «JavaFX DatePicker in Swing App» );
JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setVisible( true );

javafx.embed.swing.JFXPanel является компонентом для встраивания содержимого JavaFX в приложения Swing и обеспечивает совместимость JavaFX и Swing. JFXPanel расширяет JFXPanel javax.swing.JComponent . Отображаемый контент указывается с помощью JFXPanel setScene() который принимает экземпляр javafx.scene.Scene . Этот метод вызывается в потоке диспетчеризации событий приложения FX следующим образом:

Platform.runLater(() -> < fxPanel.setScene(createScene());

Метод createScene() возвращает экземпляр Scene с элементами управления FX. Скриншоты, показанные выше, имеют законченный графический интерфейс. В следующем фрагменте кода показан метод createScene() с фрагментами кода:

private Scene createScene() < GridPane grid = new GridPane(); Label title1 = new Label( "Enter and check if the input date is" ); Label title2 = new Label( "within the selected date range." ); VBox titleVb = new VBox(); titleVb.setAlignment(Pos.CENTER); titleVb.getChildren().addAll(title1, title2); // Input date picker Label inPickLabel = new Label( "Input date:" ); inPicker = new DatePicker(); inPicker.setPromptText(pattern); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); StringConverter converter = new LocalDateStringConverter(formatter, null ); inPicker.setConverter(converter); grid.add(inPickLabel, 0 , 0 ); grid.add(inPicker, 1 , 0 ); // From and to date pickers Label pickLabel1 = new Label( "From date:" ); fmPicker = new DatePicker(LocalDate.now()); fmPicker.setEditable( false ); grid.add(pickLabel1, 0 , 1 ); grid.add(fmPicker, 1 , 1 ); // Vbox and scene VBox vbox = new VBox( 20 ); vbox.setPadding( new Insets( 15 , 15 , 15 , 15 )); vbox.getChildren().addAll(titleVb, grid, btnHb); return new Scene(vbox);

2.1. Элемент управления DatePicker

javafx.scene.control.DatePicker управления javafx.scene.control.DatePicker позволяет пользователю вводить дату в виде текста или выбирать дату во всплывающем календаре. Свойство DatePicker представляет LocalDate выбранный LocalDate . Это свойство может использоваться с конструктором, а также имеет методы getValue() и setValue() .

Следующий фрагмент кода создает объект выбора даты и устанавливает его значение на сегодняшнюю дату: DatePicker picker = new DatePicker(LocalDate.now());

2.2. Проверка даты

В этом приложении есть три сборщика даты. Все они настроены на сбор действительных дат:

  • Значения даты не могут быть больше, чем сегодня.
  • Дата начала никогда не может быть после даты.

Для выполнения этих ограничений используется dayCellFactoryProperty DatePicker . Можно настроить собственную фабрику ячеек для настройки отдельных ячеек дня во всплывающем окне выбора даты. У средства выбора даты есть метод для установки фабрики пользовательских ячеек: setDayCellFactory() .

Эти API используются для создания собственной фабрики ячеек: класс DateCell используется DateCell даты для визуализации отдельных ячеек сетки в календарном месяце. Приложение может переопределить метод update DateCell чтобы изменить свойства каждой ячейки, такие как текст, цвет фона и т. Д.

В следующем фрагменте кода показан метод, который возвращает пользовательский dayCellFactory . Обратите внимание, что этот единственный метод возвращает фабрику ячеек для трех сборщиков дат.

Чтобы написать календарь на 5 лет (все 5 лет выводить через цикл for) или один год вывести через цикл а остальное. как написать?

twobomb

Слона нужно есть по кусочкам.
1. Напишите метод, который печатает месяц. Входные данные будут — количество дней и день недели, на который приходится первое число.
2. Напишите метод, который печатает год. Входные данные будут — день недели, на который приходится первое число и флаг високосного года. Пусть этот метод запускает метод из п.1 выдавая ему нужную информацию.
3. Напишите метод, который печатает календарь на несколько лет. Если вы реализуете п1 и п2, с п3, думаю, уже разберетесь.

Как сделать календарь в javafx

Управление DatePicker позволяет пользователю вводить дату как текст или выбирать дату из раскрывающегося календаря. Календарь основан или на стандартной хронологии ISO 8601 или на любом из других классов хронологии, определенных в java.time.chrono пакете. value свойство представляет в настоящий момент выбранный <код>LocalDate . Начальная дата может быть назначена через constructor или вызывая setValue() . Значение по умолчанию является нулем.

 final DatePicker datePicker = new DatePicker(); datePicker.setOnAction(new EventHandler() < public void handle(Event t) < LocalDate date = datePicker.getValue(); System.err.println("Selected date: " + date); >>); 

chronology свойство определяет календарную систему, которая будет использоваться для того, чтобы проанализировать, вывести на экран, и выбрать даты. value свойство всегда определяется в календарной системе ISO, однако, таким образом, приложения, основанные на различной хронологии, могут использовать методы преобразования, обеспеченные в <код>Хронология API, чтобы получить или установить соответствие <код>ChronoLocalDate значение. Например:

 LocalDate isoDate = datePicker.getValue(); ChronoLocalDate chronoDate = ((isoDate != null) ? datePicker.getChronology().date(isoDate) : null); System.err.println("Selected date: " + chronoDate); 

Сводка свойства

Календарная система, используемая для того, чтобы проанализировать, вывести на экран, и выбрать даты в управлении DatePicker.

Преобразовывает входной текст в объект типа LocalDate и наоборот.

Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker.

Редактор для DatePicker.
Должен ли раскрывающийся DatePicker вывести на экран столбец, показывающий недельные числа.

Свойства, наследованные от class javafx.scene.control. ComboBoxBase

Свойства, наследованные от class javafx.scene.control. Управление

Свойства, наследованные от class javafx.scene.layout. Область

Свойства, наследованные от class javafx.scene. Родитель

Свойства, наследованные от class javafx.scene. Узел

Полевая Сводка

Поля, наследованные от class javafx.scene.control. ComboBoxBase

Поля, наследованные от class javafx.scene.layout. Область

Сводка конструктора

Создает значение по умолчанию экземпляр DatePicker с a null набор значений даты.
Создает экземпляр DatePicker и устанавливает value к данной дате.

Сводка метода

Календарная система, используемая для того, чтобы проанализировать, вывести на экран, и выбрать даты в управлении DatePicker.

Преобразовывает входной текст в объект типа LocalDate и наоборот.
Создайте новый экземпляр кожи значения по умолчанию для этого управления.

Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker.

Редактор для DatePicker.
Получает значение хронологии свойства.
Получает значение преобразователя свойства.
Получает значение свойства dayCellFactory.
Получает значение редактора свойств.
Получает значение свойства showWeekNumbers.
Устанавливает значение хронологии свойства.
Устанавливает значение преобразователя свойства.
Устанавливает значение свойства dayCellFactory.
Устанавливает значение свойства showWeekNumbers.
Должен ли раскрывающийся DatePicker вывести на экран столбец, показывающий недельные числа.

Методы, наследованные от class javafx.scene.control. ComboBoxBase

Методы, наследованные от class javafx.scene.control. Управление

Методы, наследованные от class javafx.scene.layout. Область

Методы, наследованные от class javafx.scene. Родитель

Методы, наследованные от class javafx.scene. Узел

Методы, наследованные от class java.lang. Объект

Деталь свойства

dayCellFactory
public final ObjectPropertyCallbackDatePicker,DateCell>> dayCellFactoryProperty

Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker. Обратитесь к DateCell и Cell для получения дополнительной информации о фабриках ячейки. Пример:

 final Callback dayCellFactory = new Callback() < public DateCell call(final DatePicker datePicker) < return new DateCell() < @Override public void updateItem(LocalDate item, boolean empty) < super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) < setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); >if (item.equals(LocalDate.now().plusDays(1))) < // Tomorrow is too soon. setDisable(true); >> >; > >; datePicker.setDayCellFactory(dayCellFactory); 
хронология
public final ObjectProperty chronologyProperty

Календарная система, используемая для того, чтобы проанализировать, вывести на экран, и выбрать даты в управлении DatePicker. Значение по умолчанию возвращается из звонка Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)) . Значение по умолчанию, обычно <кодируют>IsoChronology если не обеспечено явно в <код>Локаль при помощи календарного расширения Локали. Установка значения к null восстановит хронологию значения по умолчанию.

showWeekNumbers
public final BooleanProperty showWeekNumbersProperty

Должен ли раскрывающийся DatePicker вывести на экран столбец, показывающий недельные числа. Значение по умолчанию является ложью если иначе не определено в пакете ресурса для текущей локали. Это свойство может быть переключено конечным пользователем при использовании контекстного меню в раскрывающемся DatePicker, таким образом, рекомендуется, чтобы приложения сохранили и восстановили значение между сеансами.

преобразователь
public final ObjectPropertyStringConverter> converterProperty

Преобразовывает входной текст в объект типа LocalDate и наоборот. Если не установленный приложением, кожа DatePicker class установит преобразователь, основанный на a java.time.DateTimeFormatter для тока <код>Локаль и chronology . Это средство форматирования тогда используется, чтобы проанализировать и вывести на экран текущее значение даты. Установка значения к null восстановит преобразователь значения по умолчанию. Пример используя явное средство форматирования:

 datePicker.setConverter(new StringConverter() < String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); < datePicker.setPromptText(pattern.toLowerCase()); >@Override public String toString(LocalDate date) < if (date != null) < return dateFormatter.format(date); >else < return ""; >> @Override public LocalDate fromString(String string) < if (string != null && !string.isEmpty()) < return LocalDate.parse(string, dateFormatter); >else < return null; >> >); 

Пример, который обертывает средство форматирования значения по умолчанию и ловит исключения синтаксического анализа:

 final StringConverter defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter() < @Override public String toString(LocalDate value) < return defaultConverter.toString(value); >@Override public LocalDate fromString(String text) < try < return defaultConverter.fromString(text); >catch (DateTimeParseException ex) < System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; >> >); 
редактор
public final ReadOnlyObjectPropertyTextField> editorProperty

Редактор для DatePicker.

Деталь конструктора

DatePicker

Создает значение по умолчанию экземпляр DatePicker с a null набор значений даты.

DatePicker
public DatePicker(java.time.LocalDate localDate)

Создает экземпляр DatePicker и устанавливает value к данной дате.

Деталь метода

setDayCellFactory
public final void setDayCellFactory(CallbackDatePicker,DateCell> value)

Устанавливает значение свойства dayCellFactory.

Описание свойства: Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker. Обратитесь к DateCell и Cell для получения дополнительной информации о фабриках ячейки. Пример:

 final Callback dayCellFactory = new Callback() < public DateCell call(final DatePicker datePicker) < return new DateCell() < @Override public void updateItem(LocalDate item, boolean empty) < super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) < setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); >if (item.equals(LocalDate.now().plusDays(1))) < // Tomorrow is too soon. setDisable(true); >> >; > >; datePicker.setDayCellFactory(dayCellFactory); 
getDayCellFactory
public final CallbackDatePicker,DateCell> getDayCellFactory()

Получает значение свойства dayCellFactory.

Описание свойства: Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker. Обратитесь к DateCell и Cell для получения дополнительной информации о фабриках ячейки. Пример:

 final Callback dayCellFactory = new Callback() < public DateCell call(final DatePicker datePicker) < return new DateCell() < @Override public void updateItem(LocalDate item, boolean empty) < super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) < setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); >if (item.equals(LocalDate.now().plusDays(1))) < // Tomorrow is too soon. setDisable(true); >> >; > >; datePicker.setDayCellFactory(dayCellFactory); 
dayCellFactoryProperty
public final ObjectPropertyCallbackDatePicker,DateCell>> dayCellFactoryProperty()

Пользовательская фабрика ячейки может быть обеспечена, чтобы настроить отдельные дневные ячейки в раскрывающемся DatePicker. Обратитесь к DateCell и Cell для получения дополнительной информации о фабриках ячейки. Пример:

 final Callback dayCellFactory = new Callback() < public DateCell call(final DatePicker datePicker) < return new DateCell() < @Override public void updateItem(LocalDate item, boolean empty) < super.updateItem(item, empty); if (MonthDay.from(item).equals(MonthDay.of(9, 25))) < setTooltip(new Tooltip("Happy Birthday!")); setStyle("-fx-background-color: #ff4444;"); >if (item.equals(LocalDate.now().plusDays(1))) < // Tomorrow is too soon. setDisable(true); >> >; > >; datePicker.setDayCellFactory(dayCellFactory); 
chronologyProperty
public final ObjectProperty chronologyProperty()

Календарная система, используемая для того, чтобы проанализировать, вывести на экран, и выбрать даты в управлении DatePicker. Значение по умолчанию возвращается из звонка Chronology.ofLocale(Locale.getDefault(Locale.Category.FORMAT)) . Значение по умолчанию, обычно <кодируют>IsoChronology если не обеспечено явно в <код>Локаль при помощи календарного расширения Локали. Установка значения к null восстановит хронологию значения по умолчанию.

getChronology

Получает значение хронологии свойства.

setChronology
public final void setChronology(java.time.chrono.Chronology value)

Устанавливает значение хронологии свойства.

showWeekNumbersProperty
public final BooleanProperty showWeekNumbersProperty()

Должен ли раскрывающийся DatePicker вывести на экран столбец, показывающий недельные числа. Значение по умолчанию является ложью если иначе не определено в пакете ресурса для текущей локали. Это свойство может быть переключено конечным пользователем при использовании контекстного меню в раскрывающемся DatePicker, таким образом, рекомендуется, чтобы приложения сохранили и восстановили значение между сеансами.

setShowWeekNumbers
public final void setShowWeekNumbers(boolean value)

Устанавливает значение свойства showWeekNumbers.

isShowWeekNumbers

Получает значение свойства showWeekNumbers.

converterProperty
public final ObjectPropertyStringConverter> converterProperty()

Преобразовывает входной текст в объект типа LocalDate и наоборот. Если не установленный приложением, кожа DatePicker class установит преобразователь, основанный на a java.time.DateTimeFormatter для тока <код>Локаль и chronology . Это средство форматирования тогда используется, чтобы проанализировать и вывести на экран текущее значение даты. Установка значения к null восстановит преобразователь значения по умолчанию. Пример используя явное средство форматирования:

 datePicker.setConverter(new StringConverter() < String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); < datePicker.setPromptText(pattern.toLowerCase()); >@Override public String toString(LocalDate date) < if (date != null) < return dateFormatter.format(date); >else < return ""; >> @Override public LocalDate fromString(String string) < if (string != null && !string.isEmpty()) < return LocalDate.parse(string, dateFormatter); >else < return null; >> >); 

Пример, который обертывает средство форматирования значения по умолчанию и ловит исключения синтаксического анализа:

 final StringConverter defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter() < @Override public String toString(LocalDate value) < return defaultConverter.toString(value); >@Override public LocalDate fromString(String text) < try < return defaultConverter.fromString(text); >catch (DateTimeParseException ex) < System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; >> >); 
setConverter
public final void setConverter(StringConverter value)

Устанавливает значение преобразователя свойства.

Описание свойства: Преобразовывает входной текст в объект типа LocalDate и наоборот. Если не установленный приложением, кожа DatePicker class установит преобразователь, основанный на a java.time.DateTimeFormatter для тока <код>Локаль и chronology . Это средство форматирования тогда используется, чтобы проанализировать и вывести на экран текущее значение даты. Установка значения к null восстановит преобразователь значения по умолчанию. Пример используя явное средство форматирования:

 datePicker.setConverter(new StringConverter() < String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); < datePicker.setPromptText(pattern.toLowerCase()); >@Override public String toString(LocalDate date) < if (date != null) < return dateFormatter.format(date); >else < return ""; >> @Override public LocalDate fromString(String string) < if (string != null && !string.isEmpty()) < return LocalDate.parse(string, dateFormatter); >else < return null; >> >); 

Пример, который обертывает средство форматирования значения по умолчанию и ловит исключения синтаксического анализа:

 final StringConverter defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter() < @Override public String toString(LocalDate value) < return defaultConverter.toString(value); >@Override public LocalDate fromString(String text) < try < return defaultConverter.fromString(text); >catch (DateTimeParseException ex) < System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; >> >); 
getConverter
public final StringConverter getConverter()

Получает значение преобразователя свойства.

Описание свойства: Преобразовывает входной текст в объект типа LocalDate и наоборот. Если не установленный приложением, кожа DatePicker class установит преобразователь, основанный на a java.time.DateTimeFormatter для тока <код>Локаль и chronology . Это средство форматирования тогда используется, чтобы проанализировать и вывести на экран текущее значение даты. Установка значения к null восстановит преобразователь значения по умолчанию. Пример используя явное средство форматирования:

 datePicker.setConverter(new StringConverter() < String pattern = "yyyy-MM-dd"; DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); < datePicker.setPromptText(pattern.toLowerCase()); >@Override public String toString(LocalDate date) < if (date != null) < return dateFormatter.format(date); >else < return ""; >> @Override public LocalDate fromString(String string) < if (string != null && !string.isEmpty()) < return LocalDate.parse(string, dateFormatter); >else < return null; >> >); 

Пример, который обертывает средство форматирования значения по умолчанию и ловит исключения синтаксического анализа:

 final StringConverter defaultConverter = datePicker.getConverter(); datePicker.setConverter(new StringConverter() < @Override public String toString(LocalDate value) < return defaultConverter.toString(value); >@Override public LocalDate fromString(String text) < try < return defaultConverter.fromString(text); >catch (DateTimeParseException ex) < System.err.println("HelloDatePicker: "+ex.getMessage()); throw ex; >> >); 
getEditor
public final TextField getEditor()

Получает значение редактора свойств.

editorProperty
public final ReadOnlyObjectPropertyTextField> editorProperty()

Редактор для DatePicker.

createDefaultSkin
protected Skin createDefaultSkin()

Создайте новый экземпляр кожи значения по умолчанию для этого управления. Это вызывают, чтобы создать кожу для управления, если никакая кожа не обеспечивается через CSS -fx-skin или набор явно в sub-class с setSkin(. ) .

getClassCssMetaData
public static java.util.ListCssMetaDataStyleable,?>> getClassCssMetaData()
getControlCssMetaData
public java.util.ListCssMetaDataStyleable,?>> getControlCssMetaData()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *