package SpinnerTest; import java.awt.BorderLayout; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerListModel; import javax.swing.SpinnerNumberModel; /** * Frame cu panel, ca re contine citiva regulatori de incrementare si un button de a vedea valoarea lor. * @author Dan * */ public class SpinnerFrame extends JFrame { /** * */ private static final long serialVersionUID = 1L; public SpinnerFrame() { setTitle("SpinnerTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); JPanel buttonPanel = new JPanel(); okButton = new JButton("Ok"); buttonPanel.add(okButton); add(buttonPanel, BorderLayout.SOUTH); mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(0,3)); add(mainPanel, BorderLayout.CENTER); JSpinner defaultSpinner = new JSpinner(); addRowToMainPanel("Default", defaultSpinner); JSpinner boundedSpinner = new JSpinner(new SpinnerNumberModel(5,0,10,0.5)); addRowToMainPanel("Bounded", boundedSpinner); String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); JSpinner listSpinner = new JSpinner(new SpinnerListModel(fonts)); addRowToMainPanel("List", listSpinner); JSpinner reverseListSpinner = new JSpinner(new SpinnerListModel(fonts) { /** * */ private static final long serialVersionUID = 1L; public Object getNextValue() { return super.getPreviousValue(); } public Object getPreviousValue() { return super.getNextValue(); } }); addRowToMainPanel("Reverse List", reverseListSpinner); JSpinner dateSpinner = new JSpinner(new SpinnerDateModel()); addRowToMainPanel("Date", dateSpinner); JSpinner betterDateSpinner = new JSpinner(new SpinnerDateModel()); String pattern = ((SimpleDateFormat)DateFormat.getDateInstance()).toPattern(); betterDateSpinner.setEditor(new JSpinner.DateEditor(betterDateSpinner, pattern)); addRowToMainPanel("Better Date", betterDateSpinner); JSpinner timeSpinner = new JSpinner( new SpinnerDateModel( new GregorianCalendar(2000,Calendar.JANUARY,1,12,0,0).getTime(), null,null, Calendar.HOUR)); addRowToMainPanel("Time", timeSpinner); JSpinner permSpinner = new JSpinner(new PermutationSpinnerModel("persic")); addRowToMainPanel("Word Permutation", permSpinner); } /** * Adaugarea unui rind in panelul principal * @param labelText Label a componentului JSpinner * @param spinner componetul JSpinner */ public void addRowToMainPanel(String labelText, final JSpinner spinner) { mainPanel.add(new JLabel(labelText)); mainPanel.add(spinner); final JLabel valueLabel = new JLabel(); mainPanel.add(valueLabel); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Object value = spinner.getValue(); valueLabel.setText(value.toString()); } }); } public static final int DEFAULT_WIDTH = 400; public static final int DEFAULT_HEIGHT = 200; private JButton okButton; private JPanel mainPanel; }