jspinner.java

来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 751 行 · 第 1/2 页

JAVA
751
字号
    /** The serialVersionUID. */    private static final long serialVersionUID = -4279356973770397815L;    /**     * Creates a new instance of DateEditor for the specified     * <code>JSpinner</code>.     *     * @param spinner the <code>JSpinner</code> for which to     *     create a <code>DateEditor</code> instance     */    public DateEditor(JSpinner spinner)    {      super(spinner);      DateEditorFormatter nef = new DateEditorFormatter();      nef.setMinimum(getModel().getStart());      nef.setMaximum(getModel().getEnd());      ftf.setFormatterFactory(new DefaultFormatterFactory(nef));    }    /**     * Creates a new instance of DateEditor for the specified     * <code>JSpinner</code> using the specified date format     * pattern.     *     * @param spinner the <code>JSpinner</code> for which to     *     create a <code>DateEditor</code> instance     * @param dateFormatPattern the date format to use     *     * @see SimpleDateFormat#SimpleDateFormat(String)     */    public DateEditor(JSpinner spinner, String dateFormatPattern)    {      super(spinner);      DateEditorFormatter nef = new DateEditorFormatter(dateFormatPattern);      nef.setMinimum(getModel().getStart());      nef.setMaximum(getModel().getEnd());      ftf.setFormatterFactory(new DefaultFormatterFactory(nef));    }    /**     * Returns the <code>SimpleDateFormat</code> instance that is used to     * format the date value.     *     * @return the <code>SimpleDateFormat</code> instance that is used to     *     format the date value     */    public SimpleDateFormat getFormat()    {      DateFormatter formatter = (DateFormatter) ftf.getFormatter();      return (SimpleDateFormat) formatter.getFormat();    }    /**     * Returns the {@link SpinnerDateModel} that is edited by this editor.     *     * @return the <code>SpinnerDateModel</code> that is edited by this editor     */    public SpinnerDateModel getModel()    {      return (SpinnerDateModel) getSpinner().getModel();    }  }  static class DateEditorFormatter     extends DateFormatter  {    public DateEditorFormatter()     {      super(DateFormat.getInstance());    }    public DateEditorFormatter(String dateFormatPattern)    {      super(new SimpleDateFormat(dateFormatPattern));    }  }  /**    * A listener that forwards {@link ChangeEvent} notifications from the model   * to the {@link JSpinner}'s listeners.    */  class ModelListener implements ChangeListener  {    /**     * Creates a new listener.     */    public ModelListener()    {      // nothing to do here    }        /**     * Receives notification from the model that its state has changed.     *      * @param event  the event (ignored).     */    public void stateChanged(ChangeEvent event)    {      fireStateChanged();    }  }  /**    * The model that defines the current value and permitted values for the    * spinner.    */  private SpinnerModel model;  /** The current editor. */  private JComponent editor;  private static final long serialVersionUID = 3412663575706551720L;  /**   * Creates a new <code>JSpinner</code> with default instance of    * {@link SpinnerNumberModel} (that is, a model with value 0, step size 1,    * and no upper or lower limit).   *   * @see javax.swing.SpinnerNumberModel   */  public JSpinner()  {    this(new SpinnerNumberModel());  }  /**   * Creates a new <code>JSpinner with the specified model.  The    * {@link #createEditor(SpinnerModel)} method is used to create an editor   * that is suitable for the model.   *   * @param model the model (<code>null</code> not permitted).   *    * @throws NullPointerException if <code>model</code> is <code>null</code>.   */  public JSpinner(SpinnerModel model)  {    this.model = model;    this.editor = createEditor(model);    model.addChangeListener(new ModelListener());    updateUI();  }  /**   * If the editor is <code>JSpinner.DefaultEditor</code>, then forwards the   * call to it, otherwise do nothing.   *   * @throws ParseException DOCUMENT ME!   */  public void commitEdit() throws ParseException  {    if (editor instanceof DefaultEditor)      ((DefaultEditor) editor).commitEdit();  }  /**   * Gets the current editor   *   * @return the current editor   *   * @see #setEditor   */  public JComponent getEditor()  {    return editor;  }  /**   * Changes the current editor to the new editor. The old editor is   * removed from the spinner's {@link ChangeEvent} list.   *   * @param editor the new editor (<code>null</code> not permitted.   *   * @throws IllegalArgumentException if <code>editor</code> is    *                                  <code>null</code>.   *   * @see #getEditor   */  public void setEditor(JComponent editor)  {    if (editor == null)      throw new IllegalArgumentException("editor may not be null");    JComponent oldEditor = this.editor;    if (oldEditor instanceof DefaultEditor)      ((DefaultEditor) oldEditor).dismiss(this);    else if (oldEditor instanceof ChangeListener)      removeChangeListener((ChangeListener) oldEditor);        this.editor = editor;    firePropertyChange("editor", oldEditor, editor);  }  /**   * Returns the model used by the {@link JSpinner} component.   *   * @return The model.   *    * @see #setModel(SpinnerModel)   */  public SpinnerModel getModel()  {    return model;  }  /**   * Sets a new underlying model.   *   * @param newModel the new model to set   *   * @exception IllegalArgumentException if newModel is <code>null</code>   */  public void setModel(SpinnerModel newModel)  {    if (newModel == null)      throw new IllegalArgumentException();        if (model == newModel)      return;    SpinnerModel oldModel = model;    model = newModel;    firePropertyChange("model", oldModel, newModel);    setEditor(createEditor(model));  }  /**   * Gets the next value without changing the current value.   *   * @return the next value   *   * @see javax.swing.SpinnerModel#getNextValue   */  public Object getNextValue()  {    return model.getNextValue();  }  /**   * Gets the previous value without changing the current value.   *   * @return the previous value   *   * @see javax.swing.SpinnerModel#getPreviousValue   */  public Object getPreviousValue()  {    return model.getPreviousValue();  }  /**   * Gets the <code>SpinnerUI</code> that handles this spinner   *   * @return the <code>SpinnerUI</code>   */  public SpinnerUI getUI()  {    return (SpinnerUI) ui;  }  /**   * Gets the current value of the spinner, according to the underly model,   * not the UI.   *   * @return the current value   *   * @see javax.swing.SpinnerModel#getValue   */  public Object getValue()  {    return model.getValue();  }  /**   * Sets the value in the model.   *   * @param value the new value.   */  public void setValue(Object value)  {    model.setValue(value);  }  /**   * Returns the ID that identifies which look and feel class will be   * the UI delegate for this spinner.   *   * @return <code>"SpinnerUI"</code>.   */  public String getUIClassID()  {    return "SpinnerUI";  }  /**   * This method resets the spinner's UI delegate to the default UI for the   * current look and feel.   */  public void updateUI()  {    setUI((SpinnerUI) UIManager.getUI(this));  }  /**   * Sets the UI delegate for the component.   *   * @param ui The spinner's UI delegate.   */  public void setUI(SpinnerUI ui)  {    super.setUI(ui);  }  /**   * Adds a <code>ChangeListener</code>   *   * @param listener the listener to add   */  public void addChangeListener(ChangeListener listener)  {    listenerList.add(ChangeListener.class, listener);  }  /**   * Remove a particular listener   *   * @param listener the listener to remove   */  public void removeChangeListener(ChangeListener listener)  {    listenerList.remove(ChangeListener.class, listener);  }  /**   * Gets all the <code>ChangeListener</code>s   *   * @return all the <code>ChangeListener</code>s   */  public ChangeListener[] getChangeListeners()  {    return (ChangeListener[]) listenerList.getListeners(ChangeListener.class);  }  /**   * Fires a <code>ChangeEvent</code> to all the <code>ChangeListener</code>s   * added to this <code>JSpinner</code>   */  protected void fireStateChanged()  {    ChangeEvent evt = new ChangeEvent(this);    ChangeListener[] listeners = getChangeListeners();    for (int i = 0; i < listeners.length; ++i)      listeners[i].stateChanged(evt);  }  /**   * Creates an editor that is appropriate for the specified <code>model</code>.   *   * @param model the model.   *   * @return The editor.   */  protected JComponent createEditor(SpinnerModel model)  {    if (model instanceof SpinnerDateModel)      return new DateEditor(this);    else if (model instanceof SpinnerNumberModel)      return new NumberEditor(this);    else if (model instanceof SpinnerListModel)      return new ListEditor(this);    else      return new DefaultEditor(this);  }}

⌨️ 快捷键说明

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