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

📄 jmdatepanel.java

📁 梦界家园程序开发基底框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                JLabel label = (JLabel)super.getTableCellRendererComponent(arg0, arg1, isSelected, hasFocus, row, col);
                label.setHorizontalAlignment(0);
                if(row == -1)
                {
                    if(arg1.equals(NAMES_OF_DAYS[0]) || arg1.equals(NAMES_OF_DAYS[6]))
                        label.setForeground(F_WEEKEND_DAY);
                    else
                        label.setForeground(F_NAME_OF_DAY);
                    label.setBackground(B_NAME_OF_DAY);
                    label.setHorizontalAlignment(0);
                    return label;
                }
                GregorianCalendar cal = (GregorianCalendar)calendarModel.getCalendarClone();
                Integer day = (Integer)arg1;
                Calendar today = new GregorianCalendar();
                int lastDay = cal.getActualMaximum(5);
                if(cal.get(5) == day.intValue())
                {
                    if(today.get(5) == day.intValue() && today.get(2) == calendarModel.getCalendar(2) && today.get(1) == calendarModel.getCalendar(1))
                    {
                        label.setForeground(F_SELECTED_CURRENT_DAY);
                        label.setFont(getFont().deriveFont(1));
                    } else
                    {
                        label.setForeground(Color.WHITE);
                    }
                } else
                if(day.intValue() < 1 || day.intValue() > lastDay)
                {
                    label.setForeground(Color.LIGHT_GRAY);
                    if(day.intValue() > lastDay)
                    {
                        label.setText(Integer.toString(day.intValue() - lastDay));
                    } else
                    {
                        Calendar lastMonth = new GregorianCalendar();
                        lastMonth.set(cal.get(1), cal.get(2) - 1, 1);
                        int lastDayLastMonth = lastMonth.getActualMaximum(5);
                        label.setText(Integer.toString(lastDayLastMonth + day.intValue()));
                    }
                } else
                if(today.get(5) == day.intValue() && today.get(2) == calendarModel.getCalendar(2) && today.get(1) == calendarModel.getCalendar(1))
                {
                    label.setForeground(F_CURRENT_DAY);
                    label.setFont(getFont().deriveFont(1));
                } else
                if(isWeekend(day.intValue()))
                    label.setForeground(F_WEEKEND_DAY);
                else
                    label.setForeground(Color.BLACK);
                if(cal.get(5) == day.intValue())
                    label.setBackground(new Color(10, 36, 106));
                else
                    label.setBackground(Color.WHITE);
                return label;
            }

            private CalendarTableCellRenderer()
            {
            }

        }

        public JMDatePanel()
        {
            dateFormat = 1;
            firstDayOfWeek = 2;
            initialize();
        }

        public void setFontSize(float size)
        {
            Font font = getFont().deriveFont(size);
            getMonthLabel().setFont(font);
            getTodayLabel().setFont(font);
            getYearSpinner().setFont(font);
            dayTable.setFont(font);
            dayTable.setRowHeight((int)(size * 2.0F));
        }

        @SuppressWarnings("unchecked")
        public void addActionListener(ActionListener arg)
        {
            getActionListeners().add(arg);
        }

        @SuppressWarnings("unchecked")
        public void addChangeListener(ChangeListener arg)
        {
            getChangeListeners().add(arg);
        }

        private void fireActionPerformed()
        {
            ActionListener al;
            for(Iterator i = getActionListeners().iterator(); i.hasNext(); al.actionPerformed(new ActionEvent(this, 1001, "date selected")))
                al = (ActionListener)i.next();

        }

        private ArrayList getActionListeners()
        {
            if(actionListeners == null)
                actionListeners = new ArrayList();
            return actionListeners;
        }

        public Calendar getCalendarClone()
        {
            return getCalenderModel().getCalendarClone();
        }

        private GregorianCalendarModel getCalenderModel()
        {
            if(calendarModel == null)
            {
                calendarModel = new GregorianCalendarModel();
                calendarModel.addChangeListener(eventHandler);
            }
            return calendarModel;
        }

        private JPanel getCenterPanel()
        {
            if(centerPanel == null)
            {
                centerPanel = new JPanel();
                centerPanel.setLayout(new BorderLayout());
                centerPanel.setOpaque(false);
                centerPanel.add(getDayTableHeader(), "North");
                centerPanel.add(getDayTable(), "Center");
            }
            return centerPanel;
        }

        private Vector getChangeListeners()
        {
            if(changeListeners == null)
                changeListeners = new Vector();
            return changeListeners;
        }

        private JTable getDayTable()
        {
            if(dayTable == null)
            {
                dayTable = new JTable();
                dayTable.setAutoResizeMode(4);
                dayTable.setPreferredSize(new Dimension(100, 80));
                dayTable.setModel(getCalenderModel());
                dayTable.setShowGrid(true);
                dayTable.setGridColor(Color.WHITE);
                dayTable.setSelectionMode(0);
                dayTable.setCellSelectionEnabled(true);
                dayTable.setRowSelectionAllowed(true);
                dayTable.setFocusable(false);
                dayTable.addMouseListener(getEventHandler());
                TableColumn column = null;
                for(int i = 0; i < 7; i++)
                {
                    column = dayTable.getColumnModel().getColumn(i);
                    column.setPreferredWidth(15);
                    column.setCellRenderer(getDayTableCellRenderer());
                }

            }
            return dayTable;
        }

        private CalendarTableCellRenderer getDayTableCellRenderer()
        {
            if(dayTableCellRenderer == null)
                dayTableCellRenderer = new CalendarTableCellRenderer();
            return dayTableCellRenderer;
        }

        private JTableHeader getDayTableHeader()
        {
            if(dayTableHeader == null)
            {
                dayTableHeader = getDayTable().getTableHeader();
                dayTableHeader.setResizingAllowed(false);
                dayTableHeader.setReorderingAllowed(false);
                dayTableHeader.setDefaultRenderer(getDayTableCellRenderer());
            }
            return dayTableHeader;
        }

        private EventHandler getEventHandler()
        {
            if(eventHandler == null)
                eventHandler = new EventHandler();
            return eventHandler;
        }

        private JLabel getMonthLabel()
        {
            if(monthLabel == null)
            {
                monthLabel = new JLabel();
                monthLabel.setForeground(SystemColor.activeCaptionText);
                monthLabel.setHorizontalAlignment(0);
                monthLabel.setText("uninitialised");
                monthLabel.addMouseListener(getEventHandler());
                getCalenderModel().addMonthLabel(monthLabel);
            }
            return monthLabel;
        }

        private JPopupMenu getMonthPopupMenu()
        {
            if(monthPopupMenu == null)
            {
                monthPopupMenu = new JPopupMenu();
                JMenuItem menuItems[] = getMonthPopupMenuItems();
                for(int i = 0; i < menuItems.length; i++)
                    monthPopupMenu.add(menuItems[i]);

            }
            return monthPopupMenu;
        }

        private JMenuItem[] getMonthPopupMenuItems()
        {
            if(monthPopupMenuItems == null)
            {
                DateFormatSymbols df = new DateFormatSymbols(DEFAULT_LOCALE);
                String months[] = df.getMonths();
                monthPopupMenuItems = new JMenuItem[months.length - 1];
                for(int i = 0; i < months.length - 1; i++)
                {
                    JMenuItem mi = new JMenuItem(months[i]);
                    mi.addActionListener(eventHandler);
                    monthPopupMenuItems[i] = mi;
                }

            }
            return monthPopupMenuItems;
        }

        private JButton getNextMonthButton()
        {
            if(nextMonthButton == null)
            {
                nextMonthButton = new JButton(new JNextIcon(4, 7));
                nextMonthButton.setText("");
                nextMonthButton.setPreferredSize(new Dimension(20, 15));
                nextMonthButton.setBorder(BorderFactory.createBevelBorder(0));
                nextMonthButton.setFocusable(false);
                nextMonthButton.addActionListener(getEventHandler());
            }
            return nextMonthButton;
        }

        private JPanel getNorthCenterPanel()
        {
            if(northCenterPanel == null)
            {
                northCenterPanel = new JPanel();
                northCenterPanel.setLayout(new BorderLayout());
                northCenterPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
                northCenterPanel.setOpaque(false);
                northCenterPanel.add(getMonthLabel(), "Center");
                northCenterPanel.add(getYearSpinner(), "East");
            }
            return northCenterPanel;
        }

        private JPanel getNorthPanel()
        {
            if(northPanel == null)
            {
                northPanel = new JPanel();
                northPanel.setLayout(new BorderLayout());
                northPanel.setName("");
                northPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
                northPanel.setBackground(SystemColor.activeCaption);
                northPanel.add(getPreviousMonthButton(), "West");
                northPanel.add(getNextMonthButton(), "East");
                northPanel.add(getNorthCenterPanel(), "Center");
            }
            return northPanel;
        }

        private JButton getPreviousMonthButton()
        {
            if(previousMonthButton == null)
            {
                previousMonthButton = new JButton(new JPreviousIcon(4, 7));
                previousMonthButton.setText("");
                previousMonthButton.setPreferredSize(new Dimension(20, 15));
                previousMonthButton.setBorder(BorderFactory.createBevelBorder(0));
                previousMonthButton.setFocusable(false);
                previousMonthButton.addActionListener(getEventHandler());
            }
            return previousMonthButton;
        }

        private JPanel getSouthPanel()
        {
            if(southPanel == null)
            {
                southPanel = new JPanel();
                southPanel.setLayout(new BorderLayout());
                southPanel.setBackground(Color.WHITE);
                southPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
                southPanel.add(getTodayLabel(), "Center");
            }
            return southPanel;
        }

        private JLabel getTodayLabel()
        {
            if(todayLabel == null)
            {
                todayLabel = new JLabel();
                todayLabel.setHorizontalAlignment(0);
                todayLabel.setText("uninitialised");
                todayLabel.addMouseListener(getEventHandler());
                getCalenderModel().addTodayLabel(todayLabel);
            }
            return todayLabel;
        }

        private JSpinner getYearSpinner()
        {
            if(yearSpinner == null)
            {
                yearSpinner = new JSpinner();
                yearSpinner.setModel(getCalenderModel());
            }
            return yearSpinner;
        }

        public void initialize()
        {
            setLayout(new BorderLayout());
            setSize(200, 160);
            setPreferredSize(new Dimension(200, 160));
            setBackground(SystemColor.activeCaptionText);
            setBorder(BorderFactory.createLineBorder(Color.black, 1));
            setOpaque(false);
            add(getNorthPanel(), "North");
            add(getSouthPanel(), "South");
            add(getCenterPanel(), "Center");
        }

        public void removeActionListener(ActionListener arg)
        {
            getActionListeners().remove(arg);
        }

        public void removeChangeListener(ChangeListener arg)
        {
            getChangeListeners().remove(arg);
        }

        public String toString()
        {
            DateFormat df = DateFormat.getDateInstance(dateFormat, DEFAULT_LOCALE);
            return df.format(getDate());
        }

        public void setStartDate(Date date)
        {
            getCalenderModel().setCalendar(date);
        }

        public void setDateFormat(int format)
        {
            dateFormat = format;
        }

        protected boolean isWeekend(int day)
        {
            Calendar cal = calendarModel.getCalendarClone();
            cal.set(5, day);
            int dayOfWeek = cal.get(7);
            return dayOfWeek == 1 || dayOfWeek == 7;
        }

        public void setFirstDayOfWeek(int firstDay)
        {
            firstDayOfWeek = firstDay;
        }

        public Date getDate()
        {
            return getCalendarClone().getTime();
        }



        protected static final Color F_SELECTED_CURRENT_DAY;
        protected static final Color F_CURRENT_DAY;
        protected static final Color F_WEEKEND_DAY;
        protected static final Color F_NAME_OF_DAY;
        protected static final Color B_NAME_OF_DAY;
        protected static final String TODAY = "Today: ";
        protected static final String NAMES_OF_DAYS[] = {
            "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
        };
        protected static final Cursor LABEL_CURSOR = new Cursor(12);
        protected static final Locale DEFAULT_LOCALE;
        protected int dateFormat;
        protected int firstDayOfWeek;
        protected ArrayList actionListeners;
        protected GregorianCalendarModel calendarModel;
        protected JPanel centerPanel;
        protected Vector changeListeners;
        protected JTable dayTable;
        protected CalendarTableCellRenderer dayTableCellRenderer;
        protected JTableHeader dayTableHeader;
        protected EventHandler eventHandler;
        protected JLabel monthLabel;
        protected JPopupMenu monthPopupMenu;
        protected JMenuItem monthPopupMenuItems[];
        protected JButton nextMonthButton;
        protected JPanel northCenterPanel;
        protected JPanel northPanel;
        protected JButton previousMonthButton;
        protected JPanel southPanel;
        protected JLabel todayLabel;
        protected JSpinner yearSpinner;
        static Class class$java$lang$Integer; /* synthetic field */

        static
        {
            F_SELECTED_CURRENT_DAY = Color.WHITE;
            F_CURRENT_DAY = Color.BLUE;
            F_WEEKEND_DAY = Color.RED;
            F_NAME_OF_DAY = Color.WHITE;
            B_NAME_OF_DAY = Color.GRAY;
            DEFAULT_LOCALE = Locale.US;
        }



}

⌨️ 快捷键说明

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