⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise24_1.java

📁 java程序设计 机械工业出版社 书籍代码
💻 JAVA
字号:
import javax.swing.*;import javax.swing.event.*;import java.util.*;import java.text.*;import java.awt.*;public class Exercise24_1 extends JApplet {  // Create four spinners for date, day, month, and year  private JSpinner spinnerDate =    new JSpinner(new SpinnerDateModel());  private JSpinner spinnerDay =    new JSpinner(new SpinnerNumberModel(1, 1, 31, 1));  private String[] monthNames = new DateFormatSymbols().getMonths();  private JSpinner spinnerMonth = new JSpinner    (new SpinnerListModel(Arrays.asList(monthNames).subList(0, 12)));  private JSpinner spinnerYear =    new JSpinner(new SpinnerNumberModel(2004, 1, 3000, 1));  public Exercise24_1() {    // Group labels    JPanel panel1 = new JPanel();    panel1.setLayout(new GridLayout(4, 1));    panel1.add(new JLabel("Date"));    panel1.add(new JLabel("Day"));    panel1.add(new JLabel("Month"));    panel1.add(new JLabel("Year"));    // Group spinners    JPanel panel2 = new JPanel();    panel2.setLayout(new GridLayout(4, 1));    panel2.add(spinnerDate);    panel2.add(spinnerDay);    panel2.add(spinnerMonth);    panel2.add(spinnerYear);    // Add spinner and label to the UI    getContentPane().add(panel1, BorderLayout.WEST);    getContentPane().add(panel2, BorderLayout.CENTER);    // Set editor for date    JSpinner.DateEditor dateEditor =      new JSpinner.DateEditor(spinnerDate, "MMM dd, yyyy");    spinnerDate.setEditor(dateEditor);    // Set editor for year    JSpinner.NumberEditor yearEditor =      new JSpinner.NumberEditor(spinnerYear, "####");    spinnerYear.setEditor(yearEditor);    // Update date to synchronize with the day, month, and year    updateDate();    // Register and create a listener for spinnerDay    spinnerDay.addChangeListener(new ChangeListener() {      public void stateChanged(javax.swing.event.ChangeEvent e) {        updateDate();      }    });    // Register and create a listener for spinnerMonth    spinnerMonth.addChangeListener(new ChangeListener() {      public void stateChanged(javax.swing.event.ChangeEvent e) {        updateDate();      }    });    // Register and create a listener for spinnerYear    spinnerYear.addChangeListener(new ChangeListener() {      public void stateChanged(javax.swing.event.ChangeEvent e) {        updateDate();      }    });    // Register and create a listener for spinnerDate    spinnerDate.addChangeListener(new ChangeListener() {      public void stateChanged(javax.swing.event.ChangeEvent e) {        // Get current day, month, and year in int        int day = ((Date)spinnerDate.getValue()).getDate();        int month = ((Date)spinnerDate.getValue()).getMonth();        int year = ((Date)spinnerDate.getValue()).getYear();        // Set a new date in the date spinner        System.out.println("day is " + day + " month is " + month +          " year is " + year);        spinnerDay.setValue(new Integer(day));        spinnerMonth.setValue(monthNames[month]);        spinnerYear.setValue(new Integer(year + 1900));      }    });  }  // Update date spinner to synchronize with the other three spinners  private void updateDate() {    // Get current month and year in int    int month = ((SpinnerListModel) spinnerMonth.getModel()).      getList().indexOf(spinnerMonth.getValue());    int year = ((Integer)spinnerYear.getValue()).intValue();    // Set a new maximum number of days for the new month and year    SpinnerNumberModel numberModel =      (SpinnerNumberModel)spinnerDay.getModel();    numberModel.setMaximum(new Integer(maxDaysInMonth(year, month)));    // Set a new current day if it exceeds the maximum    if (((Integer)(numberModel.getValue())).intValue() >      maxDaysInMonth(year, month))      numberModel.setValue(new Integer(maxDaysInMonth(year, month)));    // Get the current day    int day = ((Integer)spinnerDay.getValue()).intValue();    // Set a new date in the date spinner    spinnerDate.setValue(      new GregorianCalendar(year, month, day).getTime());  }  /** Return the maximum number of days in a month. For example,    Feb 2004 has 29 days. */  private int maxDaysInMonth(int year, int month) {    Calendar calendar = new GregorianCalendar(year, month, 1);    return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);  }  public static void main(String[] args) {    javax.swing.JFrame frame = new javax.swing.JFrame(        "Exercise24_1");    Exercise24_1 applet = new Exercise24_1();    // Add the applet instance to the frame    frame.getContentPane().add(applet, java.awt.BorderLayout.CENTER);    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    // Invoke init and start    applet.init();    applet.start();    // Display the frame    frame.pack();    frame.setVisible(true);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -