| /* SpinnerDemo.java -- An example showing various spinners in Swing. |
| Copyright (C) 2006, Free Software Foundation, Inc. |
| |
| This file is part of GNU Classpath examples. |
| |
| GNU Classpath is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2, or (at your option) |
| any later version. |
| |
| GNU Classpath is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU Classpath; see the file COPYING. If not, write to the |
| Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 02110-1301 USA. |
| */ |
| |
| |
| package gnu.classpath.examples.swing; |
| |
| import java.awt.BorderLayout; |
| import java.awt.Font; |
| import java.awt.GridLayout; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| import java.util.Calendar; |
| import java.util.Date; |
| |
| import javax.swing.BorderFactory; |
| import javax.swing.JButton; |
| import javax.swing.JCheckBox; |
| import javax.swing.JComponent; |
| import javax.swing.JFrame; |
| import javax.swing.JPanel; |
| import javax.swing.JSpinner; |
| import javax.swing.SpinnerDateModel; |
| import javax.swing.SpinnerListModel; |
| import javax.swing.SpinnerNumberModel; |
| import javax.swing.SwingUtilities; |
| |
| /** |
| * A simple demo showing various spinners in different states. |
| */ |
| public class SpinnerDemo |
| extends JPanel |
| implements ActionListener |
| { |
| private JCheckBox spinnerState1; |
| private JSpinner spinner1; |
| private JSpinner spinner2; |
| |
| private JCheckBox spinnerState2; |
| private JSpinner spinner3; |
| private JSpinner spinner4; |
| |
| private JCheckBox spinnerState3; |
| private JSpinner spinner5; |
| private JSpinner spinner6; |
| |
| /** |
| * Creates a new demo instance. |
| */ |
| public SpinnerDemo() |
| { |
| super(); |
| createContent(); |
| } |
| |
| /** |
| * When the demo is run independently, the frame is displayed, so we should |
| * initialise the content panel (including the demo content and a close |
| * button). But when the demo is run as part of the Swing activity board, |
| * only the demo content panel is used, the frame itself is never displayed, |
| * so we can avoid this step. |
| */ |
| void initFrameContent() |
| { |
| JPanel closePanel = new JPanel(); |
| JButton closeButton = new JButton("Close"); |
| closeButton.setActionCommand("CLOSE"); |
| closeButton.addActionListener(this); |
| closePanel.add(closeButton); |
| add(closePanel, BorderLayout.SOUTH); |
| } |
| |
| /** |
| * Returns a panel with the demo content. The panel |
| * uses a BorderLayout(), and the BorderLayout.SOUTH area |
| * is empty, to allow callers to add controls to the |
| * bottom of the panel if they want to (a close button is |
| * added if this demo is being run as a standalone demo). |
| */ |
| private void createContent() |
| { |
| setLayout(new BorderLayout()); |
| JPanel panel = new JPanel(new GridLayout(3, 1)); |
| panel.add(createPanel1()); |
| panel.add(createPanel2()); |
| panel.add(createPanel3()); |
| add(panel); |
| } |
| |
| private JPanel createPanel1() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| this.spinnerState1 = new JCheckBox("Enabled", true); |
| this.spinnerState1.setActionCommand("COMBO_STATE1"); |
| this.spinnerState1.addActionListener(this); |
| panel.add(this.spinnerState1, BorderLayout.EAST); |
| |
| JPanel controlPanel = new JPanel(); |
| controlPanel.setBorder(BorderFactory.createTitledBorder( |
| "Number Spinner: ")); |
| this.spinner1 = new JSpinner(new SpinnerNumberModel(5.0, 0.0, 10.0, 0.5)); |
| this.spinner2 = new JSpinner(new SpinnerNumberModel(50, 0, 100, 5)); |
| this.spinner2.setFont(new Font("Dialog", Font.PLAIN, 20)); |
| controlPanel.add(this.spinner1); |
| controlPanel.add(this.spinner2); |
| |
| panel.add(controlPanel); |
| |
| return panel; |
| } |
| |
| private JPanel createPanel2() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| this.spinnerState2 = new JCheckBox("Enabled", true); |
| this.spinnerState2.setActionCommand("COMBO_STATE2"); |
| this.spinnerState2.addActionListener(this); |
| panel.add(this.spinnerState2, BorderLayout.EAST); |
| |
| JPanel controlPanel = new JPanel(); |
| controlPanel.setBorder(BorderFactory.createTitledBorder("Date Spinner: ")); |
| this.spinner3 = new JSpinner(new SpinnerDateModel(new Date(), null, null, |
| Calendar.DATE)); |
| |
| this.spinner4 = new JSpinner(new SpinnerDateModel(new Date(), null, null, |
| Calendar.YEAR)); |
| this.spinner4.setFont(new Font("Dialog", Font.PLAIN, 20)); |
| |
| controlPanel.add(this.spinner3); |
| controlPanel.add(this.spinner4); |
| |
| panel.add(controlPanel); |
| |
| return panel; |
| } |
| |
| private JPanel createPanel3() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| this.spinnerState3 = new JCheckBox("Enabled", true); |
| this.spinnerState3.setActionCommand("COMBO_STATE3"); |
| this.spinnerState3.addActionListener(this); |
| panel.add(this.spinnerState3, BorderLayout.EAST); |
| |
| JPanel controlPanel = new JPanel(); |
| controlPanel.setBorder(BorderFactory.createTitledBorder("List Spinner: ")); |
| this.spinner5 = new JSpinner(new SpinnerListModel(new Object[] {"Red", |
| "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"})); |
| |
| this.spinner6 = new JSpinner(new SpinnerListModel(new Object[] {"Red", |
| "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"})); |
| this.spinner6.setValue("Yellow"); |
| this.spinner6.setFont(new Font("Dialog", Font.PLAIN, 20)); |
| |
| controlPanel.add(this.spinner5); |
| controlPanel.add(this.spinner6); |
| |
| panel.add(controlPanel); |
| |
| return panel; |
| } |
| |
| public void actionPerformed(ActionEvent e) |
| { |
| if (e.getActionCommand().equals("COMBO_STATE1")) |
| { |
| spinner1.setEnabled(spinnerState1.isSelected()); |
| spinner2.setEnabled(spinnerState1.isSelected()); |
| } |
| else if (e.getActionCommand().equals("COMBO_STATE2")) |
| { |
| spinner3.setEnabled(spinnerState2.isSelected()); |
| spinner4.setEnabled(spinnerState2.isSelected()); |
| } |
| else if (e.getActionCommand().equals("COMBO_STATE3")) |
| { |
| spinner5.setEnabled(spinnerState3.isSelected()); |
| spinner6.setEnabled(spinnerState3.isSelected()); |
| } |
| else if (e.getActionCommand().equals("CLOSE")) |
| { |
| System.exit(0); |
| } |
| } |
| |
| public static void main(String[] args) |
| { |
| SwingUtilities.invokeLater |
| (new Runnable() |
| { |
| public void run() |
| { |
| SpinnerDemo app = new SpinnerDemo(); |
| app.initFrameContent(); |
| JFrame frame = new JFrame("Spinner Demo"); |
| frame.getContentPane().add(app); |
| frame.pack(); |
| frame.setVisible(true); |
| } |
| }); |
| } |
| |
| /** |
| * Returns a DemoFactory that creates a SpinnerDemo. |
| * |
| * @return a DemoFactory that creates a SpinnerDemo |
| */ |
| public static DemoFactory createDemoFactory() |
| { |
| return new DemoFactory() |
| { |
| public JComponent createDemo() |
| { |
| return new SpinnerDemo(); |
| } |
| }; |
| } |
| } |