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

📄 simpledateformateditor.java

📁 Java 编写的多种数据挖掘算法 包括聚类、分类、预处理等
💻 JAVA
字号:
/* *    This program is free software; you can redistribute it and/or modify *    it under the terms of the GNU General Public License as published by *    the Free Software Foundation; either version 2 of the License, or *    (at your option) any later version. * *    This program 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 General Public License for more details. * *    You should have received a copy of the GNU General Public License *    along with this program; if not, write to the Free Software *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* * SimpleDateFormatEditor.java * Copyright (C) 2006 University of Waikato, Hamilton, New Zealand * */package weka.gui;import java.awt.Component;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;import java.beans.PropertyEditor;import java.text.SimpleDateFormat;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;/** * Class for editing SimpleDateFormat strings.  * * @author FracPete (fracpete at waikato dot ac dot nz) * @version $Revision: 1.1 $ * @see SimpleDateFormat */public class SimpleDateFormatEditor   implements PropertyEditor {  /** the default format */  public final static String DEFAULT_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";    /** The date format being edited */  private SimpleDateFormat m_Format;  /** A helper class for notifying listeners */  private PropertyChangeSupport m_propSupport;  /** An instance of the custom editor */  private CustomEditor m_customEditor;  /**   * This class presents a GUI for editing the cost matrix, and saving and    * loading from files.   */  private class CustomEditor     extends JPanel     implements ActionListener, DocumentListener {    /** The text field for the format */    private JTextField m_FormatText;        /** The button for setting a default date format */    private JButton m_DefaultButton;    /** The button for applying the format */    private JButton m_ApplyButton;    /**     * Constructs a new CustomEditor.     */    public CustomEditor() {      m_FormatText    = new JTextField(20);      m_DefaultButton = new JButton("Default");      m_ApplyButton   = new JButton("Apply");      m_DefaultButton.setMnemonic('D');      m_ApplyButton.setMnemonic('A');      m_FormatText.getDocument().addDocumentListener(this);      m_DefaultButton.addActionListener(this);      m_ApplyButton.addActionListener(this);      setLayout(new FlowLayout());      add(new JLabel("ISO 8601 Date format"));      add(m_FormatText);      add(m_DefaultButton);      add(m_ApplyButton);    }    /**     * Responds to the user perfoming an action.     *     * @param e the action event that occured     */    public void actionPerformed(ActionEvent e) {      if (e.getSource() == m_DefaultButton)	defaultFormat();      else if (e.getSource() == m_ApplyButton)	applyFormat();    }    /**     * sets the format to default      */    public void defaultFormat() {      m_FormatText.setText(DEFAULT_FORMAT);      formatChanged();    }    /**     * returns true if the current format is a valid format     */    protected boolean isValidFormat() {      boolean 	result;            result = false;            try {	new SimpleDateFormat(m_FormatText.getText());	result = true;      }      catch (Exception e) {	// we can ignore this exception      }            return result;    }        /**     * sets the format, but only if it's a valid one     */    public void applyFormat() {      if (isValidFormat()) {	m_Format = new SimpleDateFormat(m_FormatText.getText());	m_propSupport.firePropertyChange(null, null, null);      }      else {	throw new IllegalArgumentException(	    "Date format '" 	    + m_FormatText.getText() 	    + "' is invalid! Cannot execute applyFormat!");      }    }        /**     * Responds to a change of the text field.     */    public void formatChanged() {      m_FormatText.setText(m_Format.toPattern());      m_propSupport.firePropertyChange(null, null, null);    }        /**     * Gives notification that an attribute or set of attributes changed.     */    public void changedUpdate(DocumentEvent e) {      m_ApplyButton.setEnabled(isValidFormat());    }        /**     * Gives notification that there was an insert into the document.     */    public void insertUpdate(DocumentEvent e) {      m_ApplyButton.setEnabled(isValidFormat());    }        /**     * Gives notification that a portion of the document has been removed.     */    public void removeUpdate(DocumentEvent e) {      m_ApplyButton.setEnabled(isValidFormat());    }  }  /**   * Constructs a new SimpleDateFormatEditor.   *   */  public SimpleDateFormatEditor() {    m_propSupport = new PropertyChangeSupport(this);    m_customEditor = new CustomEditor();  }  /**   * Sets the value of the date format to be edited.   *   * @param value a SimpleDateFormat object to be edited   */  public void setValue(Object value) {    m_Format = (SimpleDateFormat) value;    m_customEditor.formatChanged();  }  /**   * Gets the date format that is being edited.   *   * @return the edited SimpleDateFormat object   */    public Object getValue() {    return m_Format;  }  /**   * Indicates whether the object can be represented graphically. In this case   * it can.   *   * @return true   */    public boolean isPaintable() {    return true;  }  /**   * Paints a graphical representation of the object. It just prints the    * format.   *   * @param gfx the graphics context to draw the representation to   * @param box the bounds within which the representation should fit.   */      public void paintValue(Graphics gfx,			 Rectangle box) {    gfx.drawString(m_Format.toPattern(), box.x, box.y + box.height);  }  /**   * Returns the Java code that generates an object the same as the one being edited.   *   * @return the initialization string   */     public String getJavaInitializationString() {    return ("new SimpleDateFormat(" + m_Format.toPattern() + ")");  }  /**   * Returns the date format string.   *   * @return the date format string   */     public String getAsText() {    return m_Format.toPattern();  }  /**   * Sets the date format string.   *   * @param text the date format string   */     public void setAsText(String text) {    m_Format = new SimpleDateFormat(text);  }  /**   * Some objects can return tags, but a date format cannot.   *   * @return null   */    public String[] getTags() {    return null;  }  /**   * Gets a GUI component with which the user can edit the date format.   *   * @return an editor GUI component   */      public Component getCustomEditor() {    return m_customEditor;  }  /**   * Indicates whether the date format can be edited in a GUI, which it can.   *   * @return true   */       public boolean supportsCustomEditor() {    return true;  }  /**   * Adds an object to the list of those that wish to be informed when the   * date format changes.   *   * @param listener a new listener to add to the list   */     public void addPropertyChangeListener(PropertyChangeListener listener) {    m_propSupport.addPropertyChangeListener(listener);  }  /**   * Removes an object from the list of those that wish to be informed when the   * date format changes.   *   * @param listener the listener to remove from the list   */    public void removePropertyChangeListener(PropertyChangeListener listener) {    m_propSupport.removePropertyChangeListener(listener);  }}

⌨️ 快捷键说明

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