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.

Create a JSpinner with customized content for icons in Java




















Home »
  Java Tutorial »
    Swing »




Action
Border
Color Chooser
Drag and Drop
Event
Font Chooser
JButton
JCheckBox
JComboBox
JDialog
JEditorPane
JFileChooser
JFormattedText
JFrame
JLabel
JList
JOptionPane
JPasswordField
JProgressBar
JRadioButton
JScrollBar
JScrollPane
JSeparator
JSlider
JSpinner
JSplitPane
JTabbedPane
JTable
JTextArea
JTextField
JTextPane
JToggleButton
JToolTip
JTree
Layout
Menu
Timer