package com.ogane.xi.test; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.text.*; import com.ogane.xi.*; public class DateChooserTest extends JFrame implements ActionListener { JLabel label=new JLabel(); JButton btn=new JButton("表示..."); public DateChooserTest() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); Container c=getContentPane(); c.setBackground(new Color(220, 211, 200)); c.setLayout(new GridLayout(0,1)); label.setOpaque(false); c.add(label); btn.addActionListener(this); btn.setOpaque(false); c.add(btn); setTitle("DateChooserTest"); setSize(170,100); setResizable(false); setVisible(true); } public void actionPerformed(ActionEvent ev) { // ダイアログを作成する DateChooser chooser=new DateChooser(); chooser.setDialogTitle("期間を選択"); chooser.setControlButtonsAreShown(true); chooser.setDaySelectionMode(DateChooser.A_PAIR_OF_DAYS); chooser.setChoosableDateFilter(new DateLimitter()); // ダイアログを表示する int ret=chooser.showDialog(this); // 結果を表示する if(ret==DateChooser.APPROVE_OPTION) { Calendar[] days=chooser.getSelectedDays(); DateFormat df=DateFormat.getDateInstance(); label.setText( df.format(days[0].getTime())+" - "+ df.format(days[1].getTime()) ); } } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public static void main(String[] args) { new DateChooserTest(); } } // 選択できる日付を制限するフィルター class DateLimitter extends DateFilter { public boolean accept( Calendar date, DateProfiler prof, Calendar[] selectedDates) { return !(prof.isNationalHoliday(date) || prof.isWeeklyHoliday(date) || prof.isSpecialHoliday(date)); } public String getDescription() { return "開始日と終了日は平日であること"; } }