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

📄 mycalendar.java

📁 java程序开发,这个程序是一个日历模块程序,调用此程序,可设置日期号
💻 JAVA
字号:
/** 
 * @(#) MyCalendar.java 
 * @author fancy 
 */

package serial; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.table.*;
 
public class MyCalendar extends JDialog 
{
   String WEEK_SUN = "七"; 
   String WEEK_MON = "一"; 
   String WEEK_TUE = "二"; 
   String WEEK_WED = "三"; 
   String WEEK_THU = "四"; 
   String WEEK_FRI = "五"; 
   String WEEK_SAT = "六";
   JPanel cPane; 
   Object obj;
   String obj1;
   JLabel yearsLabel; 
   JSpinner yearsSpinner; 
   JLabel monthsLabel; 
   JComboBox monthsComboBox; 
   JTable daysTable; 
   AbstractTableModel daysModel; 
   Calendar calendar; 
   public void mycalendar(int B1,int B2) 
   { 
      setTitle("选择日历");                     //设置窗口标题
	  setSize(200,165);                        //设置窗口大小        
	  setResizable(false);
      setModal(true); 
      setLocation(B1,B2);
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
      cPane = (JPanel) getContentPane(); 
      cPane.setLayout(new BorderLayout());
      calendar = Calendar.getInstance(); 
      calendar = Calendar.getInstance();
      yearsLabel = new JLabel("Year: "); 
      yearsSpinner = new JSpinner(); 
      yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"));
      yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR))); 
      obj = calendar.get(Calendar.DATE);
      yearsSpinner.addChangeListener(new ChangeListener() 
      { 
         public void stateChanged(ChangeEvent changeEvent) 
         { 
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue());
            int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);
            updateView(); 
         } 
      });
      JPanel yearMonthPanel = new JPanel(); 
      cPane.add(yearMonthPanel, BorderLayout.NORTH); 
      yearMonthPanel.setLayout(new BorderLayout()); 
      yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); 
      JPanel yearPanel = new JPanel(); 
      yearMonthPanel.add(yearPanel, BorderLayout.WEST); 
      yearPanel.setLayout(new BorderLayout()); 
      yearPanel.add(yearsLabel, BorderLayout.WEST); 
      yearPanel.add(yearsSpinner, BorderLayout.CENTER);
      monthsLabel = new JLabel("Month: "); 
      monthsComboBox = new JComboBox(); 
      for (int i = 1; i <= 12; i++) 
      { 
         if(i<10)
         {
            monthsComboBox.addItem("0"+new Integer(i)); 
         }
         else
         {
         	monthsComboBox.addItem(new Integer(i)); 
         }
      } 
      monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH)); 
      monthsComboBox.addActionListener(new ActionListener()
      { 
         public void actionPerformed(ActionEvent actionEvent) 
         {
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex());
            int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);
            updateView(); 
         } 
      }); 
      JPanel monthPanel = new JPanel(); 
      yearMonthPanel.add(monthPanel, BorderLayout.EAST); 
      monthPanel.setLayout(new BorderLayout()); 
      monthPanel.add(monthsLabel, BorderLayout.WEST); 
      monthPanel.add(monthsComboBox, BorderLayout.CENTER);
      daysModel = new AbstractTableModel() 
      { 
         public int getRowCount() 
         { 
            return 7; 
         }
         public int getColumnCount() 
         { 
            return 7; 
         }
         public Object getValueAt(int row, int column) 
         { 
            if (row == 0) 
            { 
               return getHeader(column); 
            } 
            row--; 
            Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
            int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1; 
            int index = row * 7 + column; 
            int dayIndex = index - moreDayCount + 1;
            if (index < moreDayCount || dayIndex > dayCount) 
            { 
               return null; 
            } 
            else 
            { 
               return new Integer(dayIndex); 
            } 
         } 
      };
      daysTable = new CalendarTable(daysModel, calendar); 
      daysTable.setShowHorizontalLines(false);
      daysTable.setShowVerticalLines(false);
      daysTable.setCellSelectionEnabled(true);
      daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() 
      { 
	     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column) 
	     { 
	        String text = (value == null) ? "" : value.toString(); 
	        JLabel cell = new JLabel(text); 
	        cell.setOpaque(true); 
	        if (row == 0) 
	        { 
	           cell.setForeground(Color.white); 
	           cell.setBackground(Color.blue); 
	        } 
	        else 
	        { 
	           if(isSelected) 
	           { 
	              cell.setForeground(Color.white); 
	              cell.setBackground(Color.blue); 
	           } 
	           else 
	           { 
	              cell.setForeground(Color.black); 
	              cell.setBackground(Color.white); 
	           } 
	        }
	        return cell; 
	     } 
      });
      updateView();
      cPane.add(daysTable, BorderLayout.CENTER); 
      setVisible(true);
   }
   public String getHeader(int index) 
   { 
      switch (index) 
      { 
        case 0: 
            return WEEK_SUN; 
        case 1: 
            return WEEK_MON; 
        case 2: 
            return WEEK_TUE; 
        case 3: 
            return WEEK_WED; 
        case 4: 
            return WEEK_THU; 
        case 5: 
            return WEEK_FRI; 
        case 6: 
            return WEEK_SAT; 
        default: 
            return null; 
      } 
   }
   public void updateView() 
   { 
      daysModel.fireTableDataChanged();
      daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),calendar.get(Calendar.WEEK_OF_MONTH));
      daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1);
   }
   public  class CalendarTable extends JTable 
   {
      private Calendar calendar;
      public CalendarTable(TableModel model, Calendar calendar)
      {
         super(model);
         this.calendar = calendar;
      }
      public void changeSelection(int row, int column, boolean toggle, boolean extend) 
      {
         super.changeSelection(row, column, toggle, extend);
         if (row == 0) 
         {
            return;
         }
         obj = getValueAt(row, column);
         obj1 = ""+obj;
         if(obj1.length()<2)
         {
         	obj1 = "0"+obj1;
         }
         if (obj != null)
         {
            dispose();
         }
      }
   }
   public String FanHui()
   { 
   	  return yearsSpinner.getValue()+"/"+monthsComboBox.getSelectedItem()+"/"+obj1;
   }
}

⌨️ 快捷键说明

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