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 + -
显示快捷键?