November 2002
Intermediate to advanced
1278 pages
38h 26m
English
You probably noticed that the JSpinner class also includes several inner
classes. These inner classes provide basic editors (and renderers) for
spinners for each of the major model types. While you’ll typically rely
on the editor picked by your spinner when you create it, you can
override that decision if you like. Here’s a simple example of a
modified DateEditor. This spinner
displays an mm/yy date, and the step
size is one month. Figure
7-16 shows such a spinner.

Figure 7-16. A customized DateEditor used in a JSpinner
Here’s the source code that built this editor:
// MonthSpinner.java
//
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.util.*;
public class MonthSpinner extends JFrame {
public MonthSpinner( ) {
super("Month Spinner");
setSize(200,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane( );
c.setLayout(new FlowLayout(FlowLayout.LEFT, 4,4));
c.add(new JLabel("Expiration Date:"));
Date today = new Date( );
// Start the spinner today, but don't set a min or max date.
// The increment should be a month.
JSpinner s = new JSpinner(new SpinnerDateModel(today,
null, null, Calendar.MONTH));
JSpinner.DateEditor de = new JSpinner.DateEditor(s, "MM/yy");
s.setEditor(de);
c.add(s);
setVisible(true);
}
public static void main(String args[]) {
new MonthSpinner( );
}
}All of the other inner class editors ...