Create a JSpinner with customized content for icons in Java
Description
The following code shows how to create a JSpinner with customized content for icons.
Example
/*//from w ww .j av a 2s. c o m
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly
*/
// IconSpinner.java
//An implementation of JSpinner with customized content--icons in this case.
//A standard spinner model is used with a custom editor (IconEditor.java).
//
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.SpinnerListModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Main extends JFrame {
public Main() {
super("JSpinner Icon Test");
setSize(300, 80);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new GridLayout(0, 2));
Icon nums[] = new Icon[] { new ImageIcon("1.gif"), new ImageIcon("2.gif"),
new ImageIcon("3.gif"), new ImageIcon("4.gif"), new ImageIcon("5.gif"),
new ImageIcon("6.gif") };
JSpinner s1 = new JSpinner(new SpinnerListModel(nums));
s1.setEditor(new IconEditor(s1));
c.add(new JLabel(" Icon Spinner"));
c.add(s1);
setVisible(true);
}
public static void main(String args[]) {
new Main();
}
}
class IconEditor extends JLabel implements ChangeListener {
JSpinner spinner;
Icon icon;
public IconEditor(JSpinner s) {
super((Icon) s.getValue(), CENTER);
icon = (Icon) s.getValue();
spinner = s;
spinner.addChangeListener(this);
}
public void stateChanged(ChangeEvent ce) {
icon = (Icon) spinner.getValue();
setIcon(icon);
}
public JSpinner getSpinner() {
return spinner;
}
public Icon getIcon() {
return icon;
}
}
The code above generates the following result.
Home »
Java Tutorial »
Swing »
Java Tutorial »
Swing »