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

📄 datefield.java

📁 一个demo是关于swing
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  NachoCalendar * * Project Info:  http://nachocalendar.sf.net * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; * either version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc.  * in the United States and other countries.] * * Changes * ------- *  * 2004-12-11   setFirsDayOfWeek now works correctly *              Added constructor with DateFormat *              Added getFormattedTextField for further customization * 2004-10-22   setEnabled(boolean b) overriden, now works * 2004-10-01   Checked with checkstyle * 2004-9-2     Added firstDayOfWeek and workingDays *              Renamed some variables *              Added the posibility to use ok/cancel buttons or simple click  *              selection * 2004-9-1     Changed the border of the textfield, now outside the component * 2004-8-30    Removed the need to especify parent Frame/Dialog, now  *              autodetected * * ------- * * DateField.java * * Created on February 1, 2004, 5:52 PM */package net.sf.nachocalendar.components;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Dialog;import java.awt.Frame;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.text.DateFormat;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFormattedTextField;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.ListSelectionModel;import javax.swing.border.Border;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.text.DateFormatter;import net.sf.nachocalendar.model.DataModel;/** * Field used to select a date. * @author Ignacio Merani */public class DateField extends JPanel implements ActionListener, PropertyChangeListener {    private WindowPanel windowpanel;    private Date fecha;    private DatePanel datepanel;    private JFormattedTextField field;    private JButton button;    private Calendar calendar;    private boolean showWeekNumbers;    private DateFormatter formatter;    private boolean antiAliased;        /**     * Utility field holding list of ChangeListeners.     */    private transient java.util.ArrayList changeListenerList;        /** Holds value of property showOkCancel. */    private boolean showOkCancel;        /**     * Holds value of property firstDayOfWeek.     */    private int firstDayOfWeek;        /**     * Holds value of property workingDays.     */    private boolean[] workingDays;        /**     * Creates a new instance of DateField.     * @param showWeekNumbers true if the week numbers must be shown     *     */    public DateField(boolean showWeekNumbers) {        //panel = new WindowPanel(parent, showWeekNumbers);        this.showWeekNumbers = showWeekNumbers;        init();    }        /**     * Constructs a default DateField.     */    public DateField() {        this(false);    }        /** Constructor with a custom formatter.     * @param formatter formatter used for the textfield     */    public DateField(DateFormatter formatter) {        this.formatter = formatter;    }            private void init() {        calendar = Calendar.getInstance();        calendar.set(Calendar.HOUR, 0);        calendar.set(Calendar.MINUTE, 0);        calendar.set(Calendar.MILLISECOND, 0);        datepanel = new DatePanel(showWeekNumbers);        datepanel.setFirstDayOfWeek(firstDayOfWeek);        datepanel.setWorkingDays(workingDays);        datepanel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);                setLayout(new BorderLayout());        if (formatter == null) formatter = new DateFormatter(DateFormat.getDateInstance(DateFormat.SHORT));        field = new JFormattedTextField(formatter);        add(field, BorderLayout.CENTER);        button = new ArrowButton(ArrowButton.SOUTH);        add(button, BorderLayout.EAST);        button.addActionListener(this);        field.setValue(new Date());        field.addPropertyChangeListener("value", this);        Border border = field.getBorder();        field.setBorder(null);        setBorder(border);    }        private void aceptar() {        windowpanel.setVisible(false);        field.setValue(windowpanel.getDate());    }        private void cancelar() {        windowpanel.setVisible(false);    }        private void createWindow() {        Component c = this;        Dialog d = null;        while (!(c instanceof Dialog) && (c != null)) {            c = c.getParent();        }        if (c != null) {            windowpanel = new WindowPanel((Dialog) c, showWeekNumbers);            return;        }                Frame f = JOptionPane.getFrameForComponent(this);        windowpanel = new WindowPanel(f, showWeekNumbers);    }    /**     * Invoked when an action occurs.     * @param e the event fired     */    public void actionPerformed(ActionEvent e) {        if (windowpanel == null) {            createWindow();        }                Date da = (Date) field.getValue();        if (da == null) {            da = calendar.getTime();        }        windowpanel.setDate(da);        Point p = getLocationOnScreen();        p.y += getHeight();        windowpanel.setLocation(p);        windowpanel.setVisible(true);    }        /**      * Sets the current Date.     * @param value current Date     */    public void setValue(Object value) {        try {            field.setValue(CalendarUtils.convertToDate(value));        } catch (ParseException e) {            e.printStackTrace();        }    }        /**      * Returns the current Date.     * @return current Date     */    public Object getValue() {        return field.getValue();    }        /**      * Registers ChangeListener to receive events.     * @param listener The listener to register.     */    public synchronized void addChangeListener(ChangeListener listener) {        if (changeListenerList == null) {            changeListenerList = new java.util.ArrayList();        }        changeListenerList.add(listener);    }        /**      * Removes ChangeListener from the list of listeners.     * @param listener The listener to remove.     */    public synchronized void removeChangeListener(ChangeListener listener) {        if (changeListenerList != null) {            changeListenerList.remove(listener);        }    }        /**     * Notifies all registered listeners about the event.     *     * @param event The event to be fired     */    private void fireChangeListenerStateChanged(ChangeEvent event) {        java.util.ArrayList list;        synchronized (this) {            if (changeListenerList == null) {                return;            }            list = (java.util.ArrayList) changeListenerList.clone();        }        for (int i = 0; i < list.size(); i++) {            ((javax.swing.event.ChangeListener) list.get(i)).stateChanged(event);        }    }    

⌨️ 快捷键说明

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