/* 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(); } }; } }