Java by API/javax.swing/JSpinner

Материал из Java эксперт
Перейти к: навигация, поиск

JSpinner: addChangeListener(ChangeListener lis)

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JSpinner; import javax.swing.SpinnerModel; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("JSpinner Dates");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   ChangeListener listener = new ChangeListener() {
     public void stateChanged(ChangeEvent e) {
       System.out.println("Source: " + e.getSource());
     }
   };
   SpinnerModel model3 = new SpinnerNumberModel();
   JSpinner spinner3 = new JSpinner(model3);
   spinner3.addChangeListener(listener);
   frame.add(spinner3, BorderLayout.SOUTH);
   frame.setSize(200, 90);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



JSpinner: getModel()

   <source lang="java">

   

/*

*
* Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/    
   

import java.awt.Color; import java.awt.Dimension; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; class GrayModel extends SpinnerNumberModel {

 public GrayModel(int value) {
   super(value, 0, 255, 5);
 }
 public int getIntValue() {
   Integer myValue = (Integer) getValue();
   return myValue.intValue();
 }
 public Color getColor() {
   int intValue = getIntValue();
   return new Color(intValue, intValue, intValue);
 }

} class GrayEditor extends JLabel implements ChangeListener {

 public GrayEditor(JSpinner spinner) {
   setOpaque(true);
   // Get info from the model.
   GrayModel myModel = (GrayModel) (spinner.getModel());
   setBackground(myModel.getColor());
   spinner.addChangeListener(this);
   // Set tool tip text.
   updateToolTipText(spinner);
   // Set size info.
   Dimension size = new Dimension(60, 15);
   setMinimumSize(size);
   setPreferredSize(size);
 }
 protected void updateToolTipText(JSpinner spinner) {
   String toolTipText = spinner.getToolTipText();
   if (toolTipText != null) {
     // JSpinner has tool tip text. Use it.
     if (!toolTipText.equals(getToolTipText())) {
       setToolTipText(toolTipText);
     }
   } else {
     // Define our own tool tip text.
     GrayModel myModel = (GrayModel) (spinner.getModel());
     int rgb = myModel.getIntValue();
     setToolTipText("(" + rgb + "," + rgb + "," + rgb + ")");
   }
 }
 public void stateChanged(ChangeEvent e) {
   JSpinner mySpinner = (JSpinner) (e.getSource());
   GrayModel myModel = (GrayModel) (mySpinner.getModel());
   setBackground(myModel.getColor());
   updateToolTipText(mySpinner);
 }

} public class Main extends JPanel {

 public static void main(String[] args) {
   JFrame frame = new JFrame("SpinnerDemo4");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JComponent newContentPane = new Main();
   newContentPane.setOpaque(true);
   frame.setContentPane(newContentPane);
   frame.add(new JLabel("Shade of Gray:"), "North");
   frame.add(new JSpinner(new GrayModel(170)));
   frame.pack();
   frame.setVisible(true);
 }

}

 </source>
   
  
 
  



JSpinner.NumberEditor.NumberEditor(JSpinner spinner)

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerModel; import javax.swing.SpinnerNumberModel;

public class Main {

 public static void main(String args[]) {
   JFrame frame = new JFrame("JSpinner Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   SpinnerModel model = new SpinnerNumberModel(50, 0, 100, .25);
   JSpinner spinner = new JSpinner(model);
   JComponent editor = new JSpinner.NumberEditor(spinner);
   spinner.setEditor(editor);
   
   JPanel panel1 = new JPanel(new BorderLayout());
   panel1.add(spinner, BorderLayout.CENTER);
   frame.add(panel1, BorderLayout.SOUTH);

   frame.setSize(200, 90);
   frame.setVisible(true);
 }

}

 </source>
   
  
 
  



JSpinner: setEditor(JComponent editor)

   <source lang="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 MainClass extends JFrame {

 public MainClass() {
   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 MainClass();
 }

} 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;
 }

}


 </source>
   
  
 
  



JSpinner: setValue(Object value)

   <source lang="java">

import javax.swing.JSpinner; public class Main {

 public static void main(String[] argv) throws Exception {
   // Create a number spinner
   JSpinner spinner = new JSpinner();
   // Set its value
   spinner.setValue(new Integer(100));
 }

}

 </source>
   
  
 
  



new JSpinner.DateEditor(JSpinner spinner, String dateFormatPattern)

   <source lang="java">

import java.awt.Container; import java.awt.FlowLayout; import java.util.Calendar; import java.util.Date; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; public class MainClass extends JFrame {

 public MainClass() {
   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();
   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 MainClass();
 }

}


 </source>
   
  
 
  



new JSpinner(SpinnerModel model1) (SpinnerDateModel)

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerModel; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("JSpinner Dates");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   SpinnerModel model1 = new SpinnerDateModel();
   JSpinner spinner1 = new JSpinner(model1);
   JLabel label1 = new JLabel("All");
   JPanel panel1 = new JPanel(new BorderLayout());
   panel1.add(label1, BorderLayout.WEST);
   panel1.add(spinner1, BorderLayout.CENTER);
   frame.add(panel1, BorderLayout.NORTH);
   frame.setSize(200, 90);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



new JSpinner(SpinnerModel model2)

   <source lang="java">

import java.awt.BorderLayout; import java.text.DateFormatSymbols; import java.util.Locale; import javax.swing.JFrame; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerListModel; import javax.swing.SpinnerModel; public class MainClass {

 public static void main(String args[]) {
   JFrame f = new JFrame("JSpinner Sample");
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
   String days[] = symbols.getWeekdays();
   SpinnerModel model1 = new SpinnerListModel(days);
   SpinnerModel model2 = new SpinnerDateModel();
   JSpinner spinner1 = new JSpinner(model1);
   JSpinner spinner2 = new JSpinner(model2);
   f.add(spinner1, BorderLayout.NORTH);
   f.add(spinner2, BorderLayout.SOUTH);
   f.setSize(300, 100);
   f.setVisible(true);
 }

}


 </source>