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

📄 jmdatepanel.java

📁 梦界家园程序开发基底框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package jm.framework.gui.module;

import java.awt.*;
import java.awt.event.*;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
    import javax.swing.table.*;

/**
 * <p>Title: JM</p>
 *
 * <p>Copyright: Copyright (c) 2004-2006</p>
 *
 * <p>Company: 1SHome</p>
 *
 * <p>@author Spook</p>
 *
 * @version 1.2.5.2
 * @see JDK 1.5.0.6
 */
public class JMDatePanel extends JPanel
    {
        protected class JPreviousIcon
            implements Icon
        {

            public int getIconWidth()
            {
                return width;
            }

            public int getIconHeight()
            {
                return height;
            }

            public void setDimension(int width, int height)
            {
                this.width = width;
                this.height = height;
            }

            public void paintIcon(Component c, Graphics g, int x, int y)
            {
                xPoints[0] = x;
                yPoints[0] = y + height / 2;
                xPoints[1] = x + width;
                yPoints[1] = y - 1;
                xPoints[2] = x + width;
                yPoints[2] = y + height;
                g.setColor(Color.BLACK);
                g.fillPolygon(xPoints, yPoints, 3);
            }

            protected int width;
            protected int height;
            protected int xPoints[];
            protected int yPoints[];

            public JPreviousIcon(int width, int height)
            {
                xPoints = new int[3];
                yPoints = new int[3];
                setDimension(width, height);
            }
        }

        protected class JNextIcon
            implements Icon
        {

            public int getIconWidth()
            {
                return width;
            }

            public int getIconHeight()
            {
                return height;
            }

            public void setDimension(int width, int height)
            {
                this.width = width;
                this.height = height;
            }

            public void paintIcon(Component c, Graphics g, int x, int y)
            {
                xPoints[0] = x + width;
                yPoints[0] = y + height / 2;
                xPoints[1] = x;
                yPoints[1] = y - 1;
                xPoints[2] = x;
                yPoints[2] = y + height;
                g.setColor(Color.BLACK);
                g.fillPolygon(xPoints, yPoints, 3);
            }

            protected int width;
            protected int height;
            protected int xPoints[];
            protected int yPoints[];

            public JNextIcon(int width, int height)
            {
                xPoints = new int[3];
                yPoints = new int[3];
                setDimension(width, height);
            }
        }

        private class GregorianCalendarModel
            implements TableModel, SpinnerModel
        {
            @SuppressWarnings("unchecked")
			public void addChangeListener(ChangeListener arg0)
            {
                changeListeners.add(arg0);
            }

            @SuppressWarnings("unchecked")
            public void addMonthLabel(JLabel label)
            {
                monthLabels.add(label);
                fireMonthTextFieldsUpdate();
            }

            @SuppressWarnings("unchecked")
            public void addTableModelListener(TableModelListener arg0)
            {
                tableModelListeners.add(arg0);
            }

            public void addTodayLabel(JLabel label)
            {
                DateFormat df1 = DateFormat.getDateInstance(dateFormat, DEFAULT_LOCALE);
                label.setText("Today: " + df1.format(new Date()));
            }

            private void fireCalendarChanged()
            {
                ChangeListener cl;
                for(Iterator i = changeListeners.iterator(); i.hasNext(); cl.stateChanged(new ChangeEvent(this)))
                    cl = (ChangeListener)i.next();

            }

            public void fireCalendarInvalidated()
            {
                fireCalendarChanged();
                fireTableModelEvent();
                fireMonthTextFieldsUpdate();
            }

            private void fireMonthTextFieldsUpdate()
            {
                JLabel label;
                DateFormatSymbols df;
                for(Iterator i = monthLabels.iterator(); i.hasNext(); label.setText(df.getMonths()[calendar.get(2)]))
                {
                    label = (JLabel)i.next();
                    df = new DateFormatSymbols(DEFAULT_LOCALE);
                }

            }

            private void fireTableModelEvent()
            {
                TableModelListener tl;
                for(Iterator i = tableModelListeners.iterator(); i.hasNext(); tl.tableChanged(new TableModelEvent(this)))
                    tl = (TableModelListener)i.next();

            }

            public int getCalendar(int field)
            {
                return calendar.get(field);
            }

            public Calendar getCalendarClone()
            {
                return (Calendar)calendar.clone();
            }

            @SuppressWarnings("unchecked")
            public Class getColumnClass(int arg0)
            {
                return class$java$lang$Integer != null ? class$java$lang$Integer : new Integer("0").getClass();
            }

            public int getColumnCount()
            {
                return 7;
            }

            public String getColumnName(int colIndex)
            {
                int index = colIndex + firstDayOfWeek;
                if(index > 7)
                    index = 1;
                String name;
                switch(index)
                {
                case 1: // '\001'
                    name = NAMES_OF_DAYS[0];
                    break;

                case 2: // '\002'
                    name = NAMES_OF_DAYS[1];
                    break;

                case 3: // '\003'
                    name = NAMES_OF_DAYS[2];
                    break;

                case 4: // '\004'
                    name = NAMES_OF_DAYS[3];
                    break;

                case 5: // '\005'
                    name = NAMES_OF_DAYS[4];
                    break;

                case 6: // '\006'
                    name = NAMES_OF_DAYS[5];
                    break;

                case 7: // '\007'
                    name = NAMES_OF_DAYS[6];
                    break;

                default:
                    name = "";
                    break;
                }
                return name;
            }

            public Object getNextValue()
            {
                return Integer.toString(getCalendar(1) + 1);
            }

            public Object getPreviousValue()
            {
                return Integer.toString(getCalendar(1) - 1);
            }

            public int getRowCount()
            {
                return 6;
            }

            public Object getValue()
            {
                return Integer.toString(getCalendar(1));
            }

            public Object getValueAt(int row, int col)
            {
                Calendar firstDayOfMonth = (Calendar)calendar.clone();
                firstDayOfMonth.set(5, 1);
                int DOW = firstDayOfMonth.get(7);
                int value = (col - DOW) + row * 7 + (firstDayOfWeek + 1);
                return new Integer(value);
            }

            public boolean isCellEditable(int arg0, int arg1)
            {
                return false;
            }

            public void removeChangeListener(ChangeListener arg0)
            {
                changeListeners.remove(arg0);
            }

            public void removeMonthLabel(JLabel label)
            {
                monthLabels.remove(label);
            }

            public void removeTableModelListener(TableModelListener arg0)
            {
                tableModelListeners.remove(arg0);
            }

            public void setCalendar(Date date)
            {
                calendar.setTime(date);
                fireCalendarInvalidated();
            }

            public void setCalendar(int field, int value)
            {
                calendar.set(field, value);
                fireCalendarInvalidated();
            }

            public void setCalendar(int year, int month, int date)
            {
                calendar.set(year, month, date);
                fireCalendarInvalidated();
            }

            public void setValue(Object arg0)
            {
                int year = Integer.parseInt((String)arg0);
                setCalendar(1, year);
            }

            public void setValueAt(Object obj, int i, int j)
            {
            }

            private GregorianCalendar calendar;
            private ArrayList changeListeners;
            private ArrayList monthLabels;
            private ArrayList tableModelListeners;

            public GregorianCalendarModel()
            {
                calendar = (GregorianCalendar)GregorianCalendar.getInstance(DEFAULT_LOCALE);
                calendar.setFirstDayOfWeek(firstDayOfWeek);
                changeListeners = new ArrayList();
                tableModelListeners = new ArrayList();
                monthLabels = new ArrayList();
            }
        }

        private class EventHandler
            implements ActionListener, MouseListener, ChangeListener
        {

            public void actionPerformed(ActionEvent arg0)
            {
                if(arg0.getSource().equals(nextMonthButton))
                {
                    GregorianCalendar cal = (GregorianCalendar)calendarModel.getCalendarClone();
                    int day = cal.get(5);
                    cal.set(cal.get(1), cal.get(2) + 1, 1);
                    if(day > cal.getActualMaximum(5))
                        cal.set(5, cal.getActualMaximum(5));
                    else
                        cal.set(5, day);
                    calendarModel.setCalendar(cal.getTime());
                } else
                if(arg0.getSource().equals(previousMonthButton))
                {
                    GregorianCalendar cal = (GregorianCalendar)calendarModel.getCalendarClone();
                    int day = cal.get(5);
                    cal.set(cal.get(1), cal.get(2) - 1, 1);
                    if(day > cal.getActualMaximum(5))
                        cal.set(5, cal.getActualMaximum(5));
                    else
                        cal.set(5, day);
                    calendarModel.setCalendar(cal.getTime());
                } else
                {
                    for(int month = 0; month < monthPopupMenuItems.length; month++)
                    {
                        if(!arg0.getSource().equals(monthPopupMenuItems[month]))
                            continue;
                        GregorianCalendar cal = (GregorianCalendar)calendarModel.getCalendarClone();
                        int day = cal.get(5);
                        cal.set(cal.get(1), month, 1);
                        if(day > cal.getActualMaximum(5))
                            cal.set(5, cal.getActualMaximum(5));
                        else
                            cal.set(5, day);
                        calendarModel.setCalendar(cal.getTime());
                    }

                }
            }

            public void mouseClicked(MouseEvent arg0)
            {
                if(arg0.getSource().equals(monthLabel))
                {
                    getMonthPopupMenu().setLightWeightPopupEnabled(false);
                    monthPopupMenu.show((Component)arg0.getSource(), arg0.getX(), arg0.getY());
                } else
                if(arg0.getSource().equals(todayLabel))
                    calendarModel.setCalendar(new Date());
                else
                if(arg0.getSource().equals(dayTable))
                {
                    int row = dayTable.getSelectedRow();
                    int col = dayTable.getSelectedColumn();
                    if(row >= 0 && row <= 5)
                    {
                        Integer date = (Integer)calendarModel.getValueAt(row, col);
                        calendarModel.setCalendar(5, date.intValue());
                        fireActionPerformed();
                    }
                }
            }

            public void mouseEntered(MouseEvent mouseevent)
            {
            }

            public void mouseExited(MouseEvent mouseevent)
            {
            }

            public void mousePressed(MouseEvent mouseevent)
            {
            }

            public void mouseReleased(MouseEvent mouseevent)
            {
            }

            public void stateChanged(ChangeEvent arg0)
            {
                if(arg0.getSource().equals(calendarModel))
                {
                    ChangeListener cl;
                    for(Iterator i = getChangeListeners().iterator(); i.hasNext(); cl.stateChanged(new ChangeEvent(this)))
                        cl = (ChangeListener)i.next();

                }
            }

            private EventHandler()
            {
            }

        }

        private class CalendarTableCellRenderer extends DefaultTableCellRenderer
        {

            public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean isSelected, boolean hasFocus, int row, int col)
            {

⌨️ 快捷键说明

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