Html java выбора даты

Что лучше использовать для выбора даты в календаре?

Выбора даты в календаре
Есть сайт, где есть календарь, там пытаюсь установить дату с 10 по 10.

Запрет выбора даты на календаре
Здравствуйте. Я хочу чтобы пользователь мог выбирать на календаре даты только за определённый.

появление текстбокса после выбора даты в календаре
я выбираю определенную дату в календаре, нажимаю на число и мне надо, чтобы появился текстбокс.

Как запарсить данные, которые генерируются после выбора даты в календаре
Добрый день. Имеется к примеру такая страница В конце строки Сеансы в кинотеатрах *** вторник 8.

Что использовать для выбора директории
Здравствуйте. Подскажите какой — нибудь действующий вариант выбора директории (папки), и возможно.

А так всё от задач зависит.

я вообще не об этом, какой элемент управления использовать для выбора даты?
пробую щас JXDatePicker, как то мало примеров с ним .

Что лучше использовать для WCF?
Здравствуйте! У меня есть клиент-серверное приложение, общающееся по WCF (именно проект, написанный.

что лучше использовать для резервного копирования
что лучше использовать для ежедневного резервного копирования БД в ночное время: 1) Из.

Что лучше использовать для хранения переменной?
я не знаю как работает my.settings не обращается ли приложение к жесткому диску при вызове.

C++ vs C#. Что лучше использовать для поставленных задач?
Приветствую всех. Интересует, что под мои задачи больше всего подходит. C++ либо C#. C++ манит.

БД: что лучше использовать для создания базы?
возникла проблема, есть база данный в тхт,но там с ней работать крайне не удобно данные лучше.

Что лучше использовать для свойств объекта?
Мне нужно хранить свойства каких то объектов. То есть, строка и для этой строки какое то значение .

Источник

Пример компонента JDatePicker

В статье рассмотрен пример (example-datepicker) использования компонента JDatePicker модуля base-gui, позволяющего выбирать дату из выпадающего календаря. В основе компонента лежит код, созданный Juan Heyns. Доработанный компонент локализован для русского, английского и немецкого языков, позволяет определить первый день недели [Воскресенье, Понедельник].

На следующем скриншоте представлен интерфейс примера.

В примере рассмотрены следующие возможности API компонента JDatePicker модуля base-gui :

  • определение первого дня недели [Вс, По];
  • локализация календаря;
  • чтение выбранной даты;
  • привязка выпадающего календаря к правому/левому краю компонента.

Описание примера

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

  1. Описание полей класса.
  2. Формирование интерфейса.
  3. Определение первого дня недели.
  4. Локализация.
  5. Чтение значений.
  6. Главный класс ExampleDatePicker.

1. Описание полей класса

Описание полей класса ExampleDatePicker включает метки lblFilter, lblFrom и lblTo, компоненты даты dtFrom и dtTo, константы (модификаторы final не приведены в листинге) определения надписей кнопок управления FIRST_DAY, FIRST_DAYS, LOCALIZATION, CHOOSE. Объекты локализации locale (текущий) и locales (возможные), идентификаторы первого дня недели FIRST_DAY_IDX и текущей локализации LOCALE_idx. Константа PATTERN_DATE определяет формат представления даты в интерфейсе примера. Константа SPAN_normal определяет порядок представления надписей на кнопках.

JLabel lblFilter = null; JLabel lblFrom = null; JLabel lblTo = null; JDatePickerImpl dtFrom = null; JDatePickerImpl dtTo = null; String[] FIRST_DAY = ", "Week from ", "Woche ab ">; String[][] FIRST_DAYS = , , >; String[] LOCALIZATION = ; String[] CHOOSE = ; Locale locale = null; Locale[] locales = ; int FIRST_DAY_IDX = 0; int LOCALE_idx = 0; String PATTERN_DATE = "dd.MM.yyyy"; String SPAN_normal = "";

2. Формирование интерфейса

Метод createGUI формирует интерфейс примера. Особый интерес в коде данного метода представляют строки создания двух компонентов JDatePicker :

  • раздельные модели (modelFrom, modelTo) для двух компонентов дат; в противном случае будет единое значение даты в обоих компонентах;
  • раздельные панели (datePanelFrom, datePanelTo) для двух компонентов дат; каждая панель использует свою модель, в противном случае будет единое значение даты в обоих компонентах;
  • вторым параметром в конструктор JDatePanelImpl передается объект локализации, определяющий языковые надписи, дни недели, список месяцев;
  • конструктор JDatePickerImpl в качестве параметров получает значения JDatePanelImpl (модель даты) и DateLabelFormatter (формат даты).

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

private void createGUI() < JPanel pnlFilter = new JPanel(); pnlFilter.setLayout(new BorderLayout()); pnlFilter.setPreferredSize(new Dimension(268, 80)); Border border = BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(15, 10, 15, 4)); pnlFilter.setBorder(border); lblFilter = new JLabel(); lblFilter.setText(SPAN_normal + "Период времени"); // Определение параметров компонентов дат UtilDateModel modelFrom ; UtilCalendarModel modelTo ; JDatePanelImpl datePanelFrom; JDatePanelImpl datePanelTo ; DateLabelFormatter dlf ; modelFrom = new UtilDateModel (); modelTo = new UtilCalendarModel(); datePanelFrom = new JDatePanelImpl(modelFrom, locale); datePanelTo = new JDatePanelImpl(modelTo , locale); dlf = new DateLabelFormatter(PATTERN_DATE); //----------------------------------------------------- Dimension dim = new Dimension(100, 20); Dimension dimLabel = new Dimension( 30, 20); //----------------------------------------------------- lblFrom = new JLabel(); lblFrom.setText(SPAN_normal + "c"); lblFrom.setPreferredSize(dimLabel); dtFrom = new JDatePickerImpl(datePanelFrom, dlf); dtFrom.setPreferredSize(new Dimension(145, 20)); dtFrom.getJFormattedTextField().setBackground(Color.WHITE); SpringLayout layoutFilter = new SpringLayout(); JPanel pnlFrom = new JPanel(layoutFilter); pnlFrom.add(lblFrom); pnlFrom.add(dtFrom); pnlFrom.setPreferredSize(dim); pnlFrom.setSize (dim); layoutFilter.putConstraint(SpringLayout.WEST, dtFrom, 30, SpringLayout.EAST, lblFrom); //----------------------------------------------------- lblTo = new JLabel(); lblTo.setText(SPAN_normal + "по"); lblTo.setPreferredSize(dimLabel); dtTo = new JDatePickerImpl(datePanelTo, dlf); dtTo.setPreferredSize(new Dimension(145, 20)); dtTo.getJFormattedTextField().setBackground(Color.WHITE); JPanel pnlTo = new JPanel(layoutFilter); pnlTo.add(lblTo); pnlTo.add(dtTo); pnlTo.setPreferredSize(dim); pnlTo.setSize (dim); layoutFilter.putConstraint(SpringLayout.WEST, dtTo, 30, SpringLayout.EAST, lblTo); //----------------------------------------------------- pnlFilter.add(pnlFrom, BorderLayout.NORTH); pnlFilter.add(pnlTo , BorderLayout.SOUTH); //----------------------------------------------------- String caption = SPAN_normal + String.format(FIRST_DAY[LOCALE_idx], FIRST_DAYS[LOCALE_idx][FIRST_DAY_IDX]); JButton btnFirstDay = new JButton(caption); String caption = SPAN_normal + LOCALIZATION[LOCALE_idx]; JButton btnLocale = new JButton(caption); String caption = SPAN_normal + CHOOSE[LOCALE_idx]; JButton btnFilter = new JButton(caption); final int WIDTH_BUTTON = 130; dim = new Dimension (WIDTH_BUTTON, 28); btnFirstDay.setPreferredSize(dim); btnLocale .setPreferredSize(dim); btnFilter .setPreferredSize(dim); // Панель кнопок управления JPanel pnlButtons = new JPanel(); pnlButtons.add(btnFirstDay); pnlButtons.add(btnLocale ); pnlButtons.add(btnFilter ); btnFirstDay.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent e) < changeFirstWeekDay(); String caption = SPAN_normal + String.format(FIRST_DAY[LOCALE_idx], FIRST_DAYS[LOCALE_idx][FIRST_DAY_IDX]); btnFirstDay.setText(caption); >>); btnLocale.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent e) < changeLocale(); btnLocale .setText(SPAN_normal + LOCALIZATION[LOCALE_idx]); btnFilter .setText(SPAN_normal + CHOOSE[LOCALE_idx]); btnFirstDay.setText(SPAN_normal + String.format(FIRST_DAY[LOCALE_idx], FIRST_DAYS[LOCALE_idx][FIRST_DAY_IDX])); >>); btnFilter.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent e) < ChoosedDates(); >>); getContentPane().add(lblFilter , BorderLayout.NORTH ); getContentPane().add(pnlFilter , BorderLayout.CENTER); getContentPane().add(pnlButtons, BorderLayout.SOUTH); >

Обработчики нажатий кнопок управления вызывают методы изменения первого дня недели и текущего языка локализации, вывода сообщения с выбранными датами.

3. Определение первого дня недели

Исходный код компонента JDatePicker, созданный Juan Heyns, допускает только один вариант первого дня недели «Su» (Sunday). Модифицированный компонент JDatePicker модуля base-gui позволяет выбрать первым днём недели как «Понедельник» (Monday), так и «Воскресенье» (Sunday). Для изменения текущего первого дня недели перезагрузки компонента не требуется, достаточно вызвать метод компонента setFirstDayMonday (boolean); истинное значение параметра (true) определяет первый день недели «Понедельник» (Monday). Ниже представлен листинг метода changeFirstWeekDay, который динамически в режиме run-time изменяет первый день недели в окне календаря.

private void changeFirstWeekDay()

На следующем скриншоте представлен открытый календарь компонента с первым днем недели «По» (Понедельник).

На скриншоте описания локализации (см. скриншот ниже) представлено окно календаря с первым днём недели «Su» (Sunday/Воскресенье).

4. Локализация

Локализация в примере касается только наименований кнопок и выпадающего окна календаря. Модифицированный компонент JDatePicker модуля base-gui позволяет использовать один из 3-х языков локализации : [русский (по умолчанию), английский, немецкий]. Для переключения языка локализации не требуется перезагрузка компонента, достаточно вызвать метод компонента changeLocale с объектом локализации, например changeLocale(new Locale(«ru»)). Ниже представлен листинг метода changeLocale, который динамически в режиме run-time изменяет язык локализации окна раскрывающегося календаря.

private void changeLocale() < if (++LOCALE_idx >= locales.length) LOCALE_idx = 0; dtFrom.changeLocale(locales[LOCALE_idx]); dtTo .changeLocale(locales[LOCALE_idx]); >

На скриншоте описания первого дня недели (см.скриншот выше) представлена русскоязычная версия открытого календаря. На следующем скриншоте представлен раскрытый календарь в английской интерпретации : окно выбора месяца, надписи и дни недели представлены на английском языке.

5. Чтение значений

Метод ChoosedDates формирует сообщение с выбранными датами и отображает его в диалоговом окне JOptionPane главного JFrame. Для получения значения даты следует использовать метод getValue модели данных (getModel()) компонента. Если значение даты не определено/выбрано, то метод вернет ‘null’.

Примечание : поскольку компоненты дат (dtFrom, dtTo) используют разные модели(UtilDateModel и UtilCalendarModel), то имеются и существенные отличия получения выбранного значения даты.

private void ChoosedDates() < // Выбранные строки String msg = "Вы выбрали период с '%s' по '%s'"; String title = "Выбор"; String from = "null"; String to = "null"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); if (dtFrom.getModel().getValue() != null) from = sdf.format(dtFrom.getModel().getValue()); if ((dtTo.getModel() instanceof UtilDateModel) && (dtTo.getModel().getValue() != null)) to = sdf.format(dtTo.getModel().getValue()); else if ((dtTo.getModel() instanceof UtilCalendarModel) && (dtTo.getModel().getValue() != null)) < Calendar calendar; calendar = (Calendar) dtTo.getModel().getValue(); to = sdf.format(calendar.getTime()); >msg = String.format(msg, from, to); JOptionPane.showMessageDialog (ExampleDatePicker.this, msg, title, JOptionPane.INFORMATION_MESSAGE); >

На следующем скриншоте представлено окно с сообщением.

6. Главный класс ExampleDatePicker

Листинг класса ExampleDatePicker (см. код ниже), не включает поля и методы, описанные выше. Полный исходный код примера можно скачать в конце страницы.

В конструкторе класса определяется текущий язык локализации и вызывается метод создания интерфейса.

public class ExampleDatePicker extends JFrame < public ExampleDatePicker() < super("Form example"); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(440, 180); locale = locales[LOCALE_idx]; createGUI(); vsetVisible(true); >public static void main(String[] args) < new ExampleDatePicker(); >>

Привязка выпадающего календаря к правому/левому краю компонента

На представленных выше скриншотах видно, что размер компонента по горизонтали меньше ширины открытого календаря. При этом, окно календаря привязано к левой стороне компонента. Исходный JDatePicker, созданный Juan Heyns, не допускал привязку окна календаря к правой стороне компонента при его близком размещении к правой стороне экрана; в этом случае часть календаря не отображалась на экране. Единственным спасением в этом случае было определять ширину компонента не меньше ширины окна календаря.

Доработанный JDatePicker модуля base-gui автоматически привязывает всплывающее окно календаря к правому краю компонента при его близком расположении к правой стороне монитора. Чтобы увидеть это достаточно переместить мышью окно примера в правую часть монитора и открыть окно календаря, как это представлено на следующем скриншоте.

Старт примера

Архив примера включает командный файл run-example-datepicker.bat для старта example-datepicker.jar в Windows из командной строки. Запускаемый example-datepicker.jar (runable) может быть стартован не только из командной строки, но и обычным способом (двойным нажатием клавишей мыши), поскольку модуль lib/base-gui-1.0.0.jar включен в classpath манифеста META-INF/MANIFEST.MF.

Скачать пример

Архивный файл base-gui-example.zip включает данный пример (example-datepicker) и другие примеры использования модуля base-gui.

Источник

Есть ли хороший и бесплатный инструмент выбора даты и времени для Java Swing?

Есть ли хороший и свободный выбор даты и времени для Java Swing? Есть много выбора даты, но нет выбора даты и времени. Это самое близкое, к которому я дошел до сих пор: Ищет дату и выбор времени Кто-нибудь?

6 ответов

Для выбора времени вы можете использовать JSpinner и установить JSpinner.DateEditor, который отображает только значение времени.

JSpinner timeSpinner = new JSpinner( new SpinnerDateModel() ); JSpinner.DateEditor timeEditor = new JSpinner.DateEditor(timeSpinner, "HH:mm:ss"); timeSpinner.setEditor(timeEditor); timeSpinner.setValue(new Date()); // will only show the current time 

Вы также можете использовать библиотеку, такую как JDatePicker: jdatepicker.org совместно, чтобы выбрать дату.

Библиотека LGoodDatePicker включает в себя хороший компонент DateTimePicker . (А также отдельные классы DatePicker и TimePicker). Три компонента просты и удобны в использовании. Вот несколько скриншотов компонентов и демонстрационного приложения. Скриншот 1 , Скриншот 2 . Домашняя страница проекта находится по адресу github.com/LGoodDatePicker/LGoodDatePicker .

JSpinners, IMO, ужасны и трудны в работе. Ответ lbalazscs дает гораздо более привлекательный вид, если вам нужны и дата, и время.

Вы можете расширить компонент Swingx JXDatePicker:

«JXDatePicker обрабатывает даты без времени. Довольно часто нам нужно разрешить пользователю выбирать дату и время. Это пример того, как использовать JXDatePicker для обработки даты и времени вместе».

EDIT: эта статья исчезла из Интернета, но, как обнаружил SingleShot, она по-прежнему доступна в интернет-архиве. Чтобы быть уверенным, вот полный рабочий пример:

import org.jdesktop.swingx.calendar.SingleDaySelectionModel; import org.jdesktop.swingx.JXDatePicker; import javax.swing.*; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.DateFormatter; import java.text.DateFormat; import java.text.ParseException; import java.util.*; import java.awt.*; /** * This is licensed under LGPL. License can be found here: http://www.gnu.org/licenses/lgpl-3.0.txt * * This is provided as is. If you have questions please direct them to charlie.hubbard at gmail dot you know what. */ public class DateTimePicker extends JXDatePicker < private JSpinner timeSpinner; private JPanel timePanel; private DateFormat timeFormat; public DateTimePicker() < super(); getMonthView().setSelectionModel(new SingleDaySelectionModel()); >public DateTimePicker( Date d ) < this(); setDate(d); >public void commitEdit() throws ParseException < commitTime(); super.commitEdit(); >public void cancelEdit() < super.cancelEdit(); setTimeSpinners(); >@Override public JPanel getLinkPanel() < super.getLinkPanel(); if( timePanel == null ) < timePanel = createTimePanel(); >setTimeSpinners(); return timePanel; > private JPanel createTimePanel() < JPanel newPanel = new JPanel(); newPanel.setLayout(new FlowLayout()); //newPanel.add(panelOriginal); SpinnerDateModel dateModel = new SpinnerDateModel(); timeSpinner = new JSpinner(dateModel); if( timeFormat == null ) timeFormat = DateFormat.getTimeInstance( DateFormat.SHORT ); updateTextFieldFormat(); newPanel.add(new JLabel( "Time:" ) ); newPanel.add(timeSpinner); newPanel.setBackground(Color.WHITE); return newPanel; >private void updateTextFieldFormat() < if( timeSpinner == null ) return; JFormattedTextField tf = ((JSpinner.DefaultEditor) timeSpinner.getEditor()).getTextField(); DefaultFormatterFactory factory = (DefaultFormatterFactory) tf.getFormatterFactory(); DateFormatter formatter = (DateFormatter) factory.getDefaultFormatter(); // Change the date format to only show the hours formatter.setFormat( timeFormat ); >private void commitTime() < Date date = getDate(); if (date != null) < Date time = (Date) timeSpinner.getValue(); GregorianCalendar timeCalendar = new GregorianCalendar(); timeCalendar.setTime( time ); GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, timeCalendar.get( Calendar.HOUR_OF_DAY ) ); calendar.set(Calendar.MINUTE, timeCalendar.get( Calendar.MINUTE ) ); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date newDate = calendar.getTime(); setDate(newDate); >> private void setTimeSpinners() < Date date = getDate(); if (date != null) < timeSpinner.setValue( date ); >> public DateFormat getTimeFormat() < return timeFormat; >public void setTimeFormat(DateFormat timeFormat) < this.timeFormat = timeFormat; updateTextFieldFormat(); >public static void main(String[] args) < Date date = new Date(); JFrame frame = new JFrame(); frame.setTitle("Date Time Picker"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DateTimePicker dateTimePicker = new DateTimePicker(); dateTimePicker.setFormats( DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.MEDIUM ) ); dateTimePicker.setTimeFormat( DateFormat.getTimeInstance( DateFormat.MEDIUM ) ); dateTimePicker.setDate(date); frame.getContentPane().add(dateTimePicker); frame.pack(); frame.setVisible(true); >> 

Источник

Читайте также:  Int from string kotlin
Оцените статью