| /* ButtonDemo.java -- An example showing various buttons in Swing. |
| Copyright (C) 2005, 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.GridLayout; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| |
| import javax.swing.BorderFactory; |
| import javax.swing.ButtonGroup; |
| import javax.swing.JButton; |
| import javax.swing.JCheckBox; |
| import javax.swing.JComponent; |
| import javax.swing.JFrame; |
| import javax.swing.JPanel; |
| import javax.swing.JRadioButton; |
| import javax.swing.JToggleButton; |
| import javax.swing.SwingConstants; |
| import javax.swing.SwingUtilities; |
| import javax.swing.plaf.metal.MetalIconFactory; |
| |
| /** |
| * A simple button demo showing various buttons in different states. |
| */ |
| public class ButtonDemo |
| extends JPanel |
| implements ActionListener |
| { |
| |
| private JCheckBox buttonState; |
| private JButton button1; |
| private JButton button2; |
| private JButton button3; |
| private JButton button4; |
| |
| private JCheckBox toggleState; |
| private JToggleButton toggle1; |
| private JToggleButton toggle2; |
| private JToggleButton toggle3; |
| private JToggleButton toggle4; |
| |
| private JCheckBox checkBoxState; |
| private JCheckBox checkBox1; |
| private JCheckBox checkBox2; |
| private JCheckBox checkBox3; |
| |
| private JCheckBox radioState; |
| private JRadioButton radio1; |
| private JRadioButton radio2; |
| private JRadioButton radio3; |
| |
| /** |
| * Creates a new demo instance. |
| */ |
| public ButtonDemo() |
| { |
| createContent(); |
| // initFrameContent() is only called (from main) when running this app |
| // standalone |
| } |
| |
| /** |
| * 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(4, 1)); |
| panel.add(createButtonPanel()); |
| panel.add(createTogglePanel()); |
| panel.add(createCheckBoxPanel()); |
| panel.add(createRadioPanel()); |
| add(panel); |
| } |
| |
| private JPanel createButtonPanel() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| this.buttonState = new JCheckBox("Enabled", true); |
| this.buttonState.setActionCommand("BUTTON_STATE"); |
| this.buttonState.addActionListener(this); |
| panel.add(this.buttonState, BorderLayout.EAST); |
| |
| JPanel buttonPanel = new JPanel(); |
| buttonPanel.setBorder(BorderFactory.createTitledBorder("JButton")); |
| this.button1 = new JButton("Button 1"); |
| |
| this.button2 = new JButton("Button 2"); |
| this.button2.setIcon(MetalIconFactory.getInternalFrameDefaultMenuIcon()); |
| |
| this.button3 = new JButton("Button 3"); |
| this.button3.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); |
| this.button3.setHorizontalTextPosition(SwingConstants.CENTER); |
| this.button3.setVerticalTextPosition(SwingConstants.BOTTOM); |
| |
| this.button4 = new JButton("Button 4"); |
| this.button4.setIcon(MetalIconFactory.getFileChooserUpFolderIcon()); |
| this.button4.setText(null); |
| |
| buttonPanel.add(button1); |
| buttonPanel.add(button2); |
| buttonPanel.add(button3); |
| buttonPanel.add(button4); |
| |
| panel.add(buttonPanel); |
| |
| return panel; |
| } |
| |
| private JPanel createTogglePanel() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| |
| this.toggleState = new JCheckBox("Enabled", true); |
| this.toggleState.setActionCommand("TOGGLE_STATE"); |
| this.toggleState.addActionListener(this); |
| |
| panel.add(this.toggleState, BorderLayout.EAST); |
| |
| JPanel buttonPanel = new JPanel(); |
| buttonPanel.setBorder(BorderFactory.createTitledBorder("JToggleButton")); |
| |
| this.toggle1 = new JToggleButton("Toggle 1"); |
| |
| this.toggle2 = new JToggleButton("Toggle 2"); |
| this.toggle2.setIcon(MetalIconFactory.getInternalFrameDefaultMenuIcon()); |
| |
| this.toggle3 = new JToggleButton("Toggle 3"); |
| this.toggle3.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); |
| this.toggle3.setHorizontalTextPosition(SwingConstants.CENTER); |
| this.toggle3.setVerticalTextPosition(SwingConstants.BOTTOM); |
| |
| this.toggle4 = new JToggleButton("Toggle 4"); |
| this.toggle4.setIcon(MetalIconFactory.getFileChooserUpFolderIcon()); |
| this.toggle4.setText(null); |
| |
| ButtonGroup toggleGroup = new ButtonGroup(); |
| toggleGroup.add(toggle1); |
| toggleGroup.add(toggle2); |
| toggleGroup.add(toggle3); |
| toggleGroup.add(toggle4); |
| |
| buttonPanel.add(toggle1); |
| buttonPanel.add(toggle2); |
| buttonPanel.add(toggle3); |
| buttonPanel.add(toggle4); |
| |
| panel.add(buttonPanel); |
| |
| return panel; |
| } |
| |
| private JPanel createCheckBoxPanel() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| |
| this.checkBoxState = new JCheckBox("Enabled", true); |
| this.checkBoxState.setActionCommand("CHECKBOX_STATE"); |
| this.checkBoxState.addActionListener(this); |
| |
| panel.add(this.checkBoxState, BorderLayout.EAST); |
| |
| JPanel buttonPanel = new JPanel(); |
| buttonPanel.setBorder(BorderFactory.createTitledBorder("JCheckBox")); |
| this.checkBox1 = new JCheckBox("CheckBox 1"); |
| |
| this.checkBox2 = new JCheckBox("CheckBox 2"); |
| |
| this.checkBox3 = new JCheckBox("CheckBox 3"); |
| |
| buttonPanel.add(checkBox1); |
| buttonPanel.add(checkBox2); |
| buttonPanel.add(checkBox3); |
| |
| panel.add(buttonPanel); |
| |
| return panel; |
| } |
| |
| private JPanel createRadioPanel() |
| { |
| JPanel panel = new JPanel(new BorderLayout()); |
| |
| this.radioState = new JCheckBox("Enabled", true); |
| this.radioState.setActionCommand("RADIO_STATE"); |
| this.radioState.addActionListener(this); |
| panel.add(this.radioState, BorderLayout.EAST); |
| |
| JPanel buttonPanel = new JPanel(); |
| buttonPanel.setBorder(BorderFactory.createTitledBorder("JRadioButton")); |
| this.radio1 = new JRadioButton("Radio 1"); |
| |
| this.radio2 = new JRadioButton("Radio 2"); |
| |
| this.radio3 = new JRadioButton("Radio 3"); |
| |
| ButtonGroup radioGroup = new ButtonGroup(); |
| radioGroup.add(radio1); |
| radioGroup.add(radio2); |
| radioGroup.add(radio3); |
| |
| buttonPanel.add(radio1); |
| buttonPanel.add(radio2); |
| buttonPanel.add(radio3); |
| |
| panel.add(buttonPanel); |
| |
| return panel; |
| } |
| |
| public void actionPerformed(ActionEvent e) |
| { |
| if (e.getActionCommand().equals("BUTTON_STATE")) |
| { |
| button1.setEnabled(buttonState.isSelected()); |
| button2.setEnabled(buttonState.isSelected()); |
| button3.setEnabled(buttonState.isSelected()); |
| button4.setEnabled(buttonState.isSelected()); |
| } |
| else if (e.getActionCommand().equals("TOGGLE_STATE")) |
| { |
| toggle1.setEnabled(toggleState.isSelected()); |
| toggle2.setEnabled(toggleState.isSelected()); |
| toggle3.setEnabled(toggleState.isSelected()); |
| toggle4.setEnabled(toggleState.isSelected()); |
| } |
| else if (e.getActionCommand().equals("CHECKBOX_STATE")) |
| { |
| checkBox1.setEnabled(checkBoxState.isSelected()); |
| checkBox2.setEnabled(checkBoxState.isSelected()); |
| checkBox3.setEnabled(checkBoxState.isSelected()); |
| } |
| else if (e.getActionCommand().equals("RADIO_STATE")) |
| { |
| radio1.setEnabled(radioState.isSelected()); |
| radio2.setEnabled(radioState.isSelected()); |
| radio3.setEnabled(radioState.isSelected()); |
| } |
| else if (e.getActionCommand().equals("CLOSE")) |
| { |
| System.exit(0); |
| } |
| } |
| |
| public static void main(String[] args) |
| { |
| SwingUtilities.invokeLater |
| (new Runnable() |
| { |
| public void run() |
| { |
| ButtonDemo app = new ButtonDemo(); |
| app.initFrameContent(); |
| JFrame frame = new JFrame("ButtonDemo"); |
| frame.getContentPane().add(app); |
| frame.pack(); |
| frame.setVisible(true); |
| } |
| }); |
| } |
| |
| /** |
| * Returns a DemoFactory that creates a ButtonDemo. |
| * |
| * @return a DemoFactory that creates a ButtonDemo |
| */ |
| public static DemoFactory createDemoFactory() |
| { |
| return new DemoFactory() |
| { |
| public JComponent createDemo() |
| { |
| return new ButtonDemo(); |
| } |
| }; |
| } |
| } |