blob: 1c6dfa01b02e854315ac31cc593bb2964f60d850 [file] [log] [blame]
/* 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();
}
};
}
}