Java/Swing JFC/CheckBox Button
Содержание
- 1 Adding an Icon to the Label of a JCheckBox Component
- 2 Bad Checkbox UI
- 3 CheckBox Demo 2
- 4 Check boxes with item changed event.
- 5 CheckBox Item Listener
- 6 CheckBox Mnemonic
- 7 Creating a JCheckbox Component
- 8 Customize JCheckBox icons
- 9 Customize these disabled icons
- 10 Customizing the Icons in a JCheckBox Component
- 11 Display an icon when the cursor is moved over the checkbox. This is called the rollover icon.
- 12 Flat CheckBox
- 13 Get or set the selection state of JCheckBox
- 14 Getting and Setting the State of a JCheckbox Component
- 15 How to use the check box button
- 16 Icon CheckBox Demo
- 17 JCheckBox is a widget that has two states. On and Off.
- 18 Radio button, ComboBox
- 19 Set pressed icon
- 20 Swing CheckBox Demo
- 21 Swing CheckBoxes
Adding an Icon to the Label of a JCheckBox Component
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
String label = "<html><table cellpadding=0><tr><td><img src=file:"
+ "icon.gif" + "/></td><td width=" + 3 + "><td>"
// Retrieve the current label text
+ checkbox.getText() + "</td></tr></table></html>";
// Add the icon
checkbox.setText(label);
}
}
Bad Checkbox UI
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.plaf.ruponentUI;
import javax.swing.plaf.basic.BasicCheckBoxUI;
public class MyCheckBoxUI extends BasicCheckBoxUI implements
java.io.Serializable, MouseListener {
private final static MyCheckBoxUI buttonUI = new MyCheckBoxUI();
public MyCheckBoxUI() {
}
public static ComponentUI createUI(JComponent c) {
return buttonUI;
}
public void installUI(JComponent c) {
super.installUI(c);
c.setBackground(Color.red);
c.addMouseListener(this);
}
public void uninstallUI(JComponent c) {
super.uninstallUI(c);
c.removeMouseListener(this);
}
public void paint(Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();
Dimension d = b.getSize();
g.setFont(c.getFont());
FontMetrics fm = g.getFontMetrics();
g.setColor(Color.white);
g.drawString("Am I a check box", 10, 10);
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
JComponent c = (JComponent) e.getComponent();
c.setBackground(Color.blue);
c.repaint();
}
public void mouseExited(MouseEvent e) {
JComponent c = (JComponent) e.getComponent();
c.setBackground(Color.red);
c.repaint();
}
public static void main(String[] argv) {
JFrame f = new JFrame();
f.setSize(400, 300);
f.getContentPane().setLayout(new FlowLayout());
JPanel p = new JPanel();
JCheckBox bt1 = new JCheckBox("Click Me");
bt1.setUI(new MyCheckBoxUI());
p.add(bt1);
f.getContentPane().add(p);
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
f.addWindowListener(wndCloser);
f.setVisible(true);
}
}
CheckBox Demo 2
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class ACheckBox {
public static void main(String args[]) {
String title = (args.length == 0 ? "CheckBox Sample" : args[0]);
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
JButton button = new JButton("Submit");
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Check boxes with item changed event.
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class Main implements ItemListener {
JCheckBox jcbControl = new JCheckBox("Translate");
JCheckBox jcbOption1 = new JCheckBox("A");
JCheckBox jcbOption2 = new JCheckBox("B");
JCheckBox jcbOption3 = new JCheckBox("C");
Main() {
JFrame jfrm = new JFrame("Check Box Demo");
jfrm.setLayout(new FlowLayout());
jfrm.setSize(300, 200);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jcbOption1.setEnabled(false);
jcbOption2.setEnabled(false);
jcbOption3.setEnabled(false);
jcbControl.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (jcbControl.isSelected()) {
jcbOption1.setEnabled(true);
jcbOption2.setEnabled(true);
jcbOption3.setEnabled(true);
System.out.println("enabled.");
} else {
jcbOption1.setEnabled(false);
jcbOption2.setEnabled(false);
jcbOption3.setEnabled(false);
System.out.println("disabled.");
}
}
});
jcbOption1.addItemListener(this);
jcbOption2.addItemListener(this);
jcbOption3.addItemListener(this);
jfrm.add(jcbControl);
jfrm.add(jcbOption1);
jfrm.add(jcbOption2);
jfrm.add(jcbOption3);
jfrm.setVisible(true);
}
public void itemStateChanged(ItemEvent ie) {
JCheckBox cb = (JCheckBox) ie.getItem();
if (ie.getStateChange() == ItemEvent.SELECTED)
System.out.println(cb.getText() + " selected.");
else
System.out.println(cb.getText() + " cleared.");
if (jcbOption1.isSelected())
System.out.println("1");
else if (jcbOption2.isSelected())
System.out.println("2");
else if (jcbOption3.isSelected())
System.out.println("3");
else
System.out.println("None");
}
public static void main(String args[]) {
new Main();
}
}
CheckBox Item Listener
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SelectingCheckBox {
private static String DESELECTED_LABEL = "Deselected";
private static String SELECTED_LABEL = "Selected";
public static void main(String args[]) {
JFrame frame = new JFrame("Selecting CheckBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox checkBox = new JCheckBox(DESELECTED_LABEL);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
AbstractButton abstractButton = (AbstractButton)actionEvent.getSource();
boolean selected = abstractButton.getModel().isSelected();
String newLabel = (selected ? SELECTED_LABEL : DESELECTED_LABEL);
abstractButton.setText(newLabel);
}
};
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
AbstractButton abstractButton = (AbstractButton)changeEvent.getSource();
ButtonModel buttonModel = abstractButton.getModel();
boolean armed = buttonModel.isArmed();
boolean pressed = buttonModel.isPressed();
boolean selected = buttonModel.isSelected();
System.out.println("Changed: " + armed + "/" + pressed + "/" + selected);
}
};
ItemListener itemListener = new ItemListener() {
public void itemStateChanged(ItemEvent itemEvent) {
AbstractButton abstractButton = (AbstractButton)itemEvent.getSource();
Color foreground = abstractButton.getForeground();
Color background = abstractButton.getBackground();
int state = itemEvent.getStateChange();
if (state == ItemEvent.SELECTED) {
abstractButton.setForeground(background);
abstractButton.setBackground(foreground);
}
}
};
checkBox.addActionListener(actionListener);
checkBox.addChangeListener(changeListener);
checkBox.addItemListener(itemListener);
checkBox.setMnemonic(KeyEvent.VK_S);
Container contentPane = frame.getContentPane();
contentPane.add(checkBox, BorderLayout.NORTH);
frame.setSize(300, 100);
frame.setVisible(true);
}
}
CheckBox Mnemonic
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class CheckBoxMnemonic extends JPanel {
public CheckBoxMnemonic() {
JCheckBox m_chkBold = new JCheckBox("Bold");
m_chkBold.setMnemonic("b");
m_chkBold.setToolTipText("Bold font");
add(m_chkBold);
setBorder(new TitledBorder(new EtchedBorder(), "Effects"));
JCheckBox m_chkItalic = new JCheckBox("Italic");
m_chkItalic.setMnemonic("i");
m_chkItalic.setToolTipText("Italic font");
add(m_chkItalic);
JCheckBox m_chkUnderline = new JCheckBox("Underline");
m_chkUnderline.setMnemonic("u");
m_chkUnderline.setToolTipText("Underline font");
add(m_chkUnderline);
JCheckBox m_chkStrikethrough = new JCheckBox("Strikethrough");
m_chkStrikethrough.setMnemonic("r");
m_chkStrikethrough.setToolTipText("Strikethrough font");
add(m_chkStrikethrough);
JCheckBox m_chkSubscript = new JCheckBox("Subscript");
m_chkSubscript.setMnemonic("t");
m_chkSubscript.setToolTipText("Subscript font");
add(m_chkSubscript);
JCheckBox m_chkSuperscript = new JCheckBox("Superscript");
m_chkSuperscript.setMnemonic("p");
m_chkSuperscript.setToolTipText("Superscript font");
add(m_chkSuperscript);
}
public static void main(String[] a) {
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.getContentPane().add(new CheckBoxMnemonic());
f.pack();
f.setSize(new Dimension(300, 200));
f.show();
}
}
Creating a JCheckbox Component
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
Action action = new AbstractAction("CheckBox Label") {
// called when the button is pressed
public void actionPerformed(ActionEvent evt) {
JCheckBox cb = (JCheckBox) evt.getSource();
// Determine status
boolean isSel = cb.isSelected();
if (isSel) {
// selected
} else {
// deselected
}
}
};
// Create the checkbox from the action
JCheckBox checkBox = new JCheckBox(action);
}
}
Customize JCheckBox icons
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class JCheckBoxCustomIcon extends JFrame {
public JCheckBoxCustomIcon() {
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.LEFT));
JCheckBox checkBox = new JCheckBox("Check me!");
checkBox.setSelected(true);
// Set default icon for checkbox
checkBox.setIcon(new ImageIcon("icon.png"));
// Set selected icon when checkbox state is selected
checkBox.setSelectedIcon(new ImageIcon("selectedIcon.png"));
// Set disabled icon for checkbox
checkBox.setDisabledIcon(new ImageIcon("disabledIcon.png"));
// Set disabled-selected icon for checkbox
checkBox.setDisabledSelectedIcon(new ImageIcon("disabledSelectedIcon.png"));
// Set checkbox icon when checkbox is pressed
checkBox.setPressedIcon(new ImageIcon("pressedIcon.png"));
// Set icon when a mouse is over the checkbox
checkBox.setRolloverIcon(new ImageIcon("rolloverIcon.png"));
// Set icon when a mouse is over a selected checkbox
checkBox.setRolloverSelectedIcon(new ImageIcon("rolloverSelectedIcon.png"));
getContentPane().add(checkBox);
}
public static void main(String[] args) {
new JCheckBoxCustomIcon().setVisible(true);
}
}
Customize these disabled icons
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
// Set the unselected state icon
Icon unselDisIcon = new ImageIcon("nosel-dis-icon.gif");
checkbox.setDisabledIcon(unselDisIcon);
// Set the selected state icon
Icon selDisIcon = new ImageIcon("sel-dis-icon.gif");
checkbox.setDisabledSelectedIcon(selDisIcon);
}
}
Customizing the Icons in a JCheckBox Component
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
// Set the unselected state icon
Icon unselIcon = new ImageIcon("nosel-icon.gif");
checkbox.setIcon(unselIcon);
// Set the selected state icon
Icon selIcon = new ImageIcon("sel-icon.gif");
checkbox.setSelectedIcon(selIcon);
}
}
Display an icon when the cursor is moved over the checkbox. This is called the rollover icon.
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
Icon rollIcon = new ImageIcon("roll-icon.gif");
checkbox.setRolloverIcon(rollIcon);
}
}
Flat CheckBox
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class FlatCheckBox {
public static void main(String args[]) {
JFrame frame = new JFrame("Flat CheckBox Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
check.setBorderPaintedFlat(true);
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
check.setBorderPaintedFlat(true);
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
check.setBorderPaintedFlat(true);
panel.add(check);
JButton button = new JButton("Submit");
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Get or set the selection state of JCheckBox
import java.awt.FlowLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class CheckBoxState extends JFrame {
public CheckBoxState() {
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.LEFT));
JCheckBox checkBox = new JCheckBox("Check me!");
checkBox.setSelected(true);
boolean selected = checkBox.isSelected();
if (selected) {
System.out.println("Check box state is selected.");
} else {
System.out.println("Check box state is not selected.");
}
getContentPane().add(checkBox);
}
public static void main(String[] args) {
new CheckBoxState().setVisible(true);
}
}
Getting and Setting the State of a JCheckbox Component
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
// Get the current state of the checkbox
boolean b = checkbox.isSelected();
// Set the state of the checkbox to off
checkbox.setSelected(false);
// Set the state of the checkbox to on
checkbox.setSelected(true);
}
}
How to use the check box button
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class CheckBoxDemo extends JFrame implements ActionListener {
JLabel fontLabel = new JLabel("The quick brown fox jumps over the lazy dog.");
private JCheckBox bold= new JCheckBox("Bold");
private JCheckBox italic = new JCheckBox("Italic");
public CheckBoxDemo() {
setTitle("CheckBoxTest");
setSize(300, 200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JPanel p = new JPanel();
p.add(bold);
p.add(italic);
bold.addActionListener(this);
italic.addActionListener(this);
getContentPane().add(p, "South");
getContentPane().add(fontLabel, "Center");
}
public void actionPerformed(ActionEvent evt) {
int m = (bold.isSelected() ? Font.BOLD : 0)
+ (italic.isSelected() ? Font.ITALIC : 0);
fontLabel.setFont(new Font("SansSerif", m, 12));
}
public static void main(String[] args) {
JFrame frame = new CheckBoxDemo();
frame.show();
}
}
Icon CheckBox Demo
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Polygon;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class IconCheckBoxSample {
private static class CheckBoxIcon implements Icon {
private ImageIcon checkedIcon = new ImageIcon("Plus.gif");
private ImageIcon uncheckedIcon = new ImageIcon("Minus.gif");
public void paintIcon(Component component, Graphics g, int x, int y) {
AbstractButton abstractButton = (AbstractButton) component;
ButtonModel buttonModel = abstractButton.getModel();
g.translate(x, y);
ImageIcon imageIcon = buttonModel.isSelected() ? checkedIcon
: uncheckedIcon;
Image image = imageIcon.getImage();
g.drawImage(image, 0, 0, component);
g.translate(-x, -y);
}
public int getIconWidth() {
return 20;
}
public int getIconHeight() {
return 20;
}
}
public static void main(String args[]) {
JFrame frame = new JFrame("Iconizing CheckBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Icon checked = new DiamondIcon(Color.black, true);
Icon unchecked = new DiamondIcon(Color.black, false);
JCheckBox aCheckBox1 = new JCheckBox("Pizza", unchecked);
aCheckBox1.setSelectedIcon(checked);
JCheckBox aCheckBox2 = new JCheckBox("Calzone");
aCheckBox2.setIcon(unchecked);
aCheckBox2.setSelectedIcon(checked);
Icon checkBoxIcon = new CheckBoxIcon();
JCheckBox aCheckBox3 = new JCheckBox("Anchovies", checkBoxIcon);
JCheckBox aCheckBox4 = new JCheckBox("Stuffed Crust", checked);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new GridLayout(0, 1));
contentPane.add(aCheckBox1);
contentPane.add(aCheckBox2);
contentPane.add(aCheckBox3);
contentPane.add(aCheckBox4);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
class DiamondIcon implements Icon {
private Color color;
private boolean selected;
private int width;
private int height;
private Polygon poly;
private static final int DEFAULT_WIDTH = 10;
private static final int DEFAULT_HEIGHT = 10;
public DiamondIcon(Color color) {
this(color, true, DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
public DiamondIcon(Color color, boolean selected) {
this(color, selected, DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
public DiamondIcon(Color color, boolean selected, int width, int height) {
this.color = color;
this.selected = selected;
this.width = width;
this.height = height;
initPolygon();
}
private void initPolygon() {
poly = new Polygon();
int halfWidth = width / 2;
int halfHeight = height / 2;
poly.addPoint(0, halfHeight);
poly.addPoint(halfWidth, 0);
poly.addPoint(width, halfHeight);
poly.addPoint(halfWidth, height);
}
public int getIconHeight() {
return height;
}
public int getIconWidth() {
return width;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
g.setColor(color);
g.translate(x, y);
if (selected) {
g.fillPolygon(poly);
} else {
g.drawPolygon(poly);
}
g.translate(-x, -y);
}
}
JCheckBox is a widget that has two states. On and Off.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
public class CheckBox extends JFrame implements ActionListener {
public CheckBox() {
JCheckBox checkbox = new JCheckBox("Show Title", true);
checkbox.addActionListener(this);
add(checkbox);
setSize(280, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new CheckBox();
}
public void actionPerformed(ActionEvent e) {
if (this.getTitle() == "") {
this.setTitle("Checkbox example");
} else {
this.setTitle("");
}
}
}
Radio button, ComboBox
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.Border;
public class ARadioCombo {
public static void main(String args[]) {
JFrame frame = new JFrame("Radio/Combo Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Radio Buttons");
panel.setBorder(border);
ButtonGroup group = new ButtonGroup();
JRadioButton aRadioButton = new JRadioButton("4 slices");
panel.add(aRadioButton);
group.add(aRadioButton);
aRadioButton = new JRadioButton("8 slices", true);
panel.add(aRadioButton);
group.add(aRadioButton);
aRadioButton = new JRadioButton("12 slices");
panel.add(aRadioButton);
group.add(aRadioButton);
aRadioButton = new JRadioButton("16 slices");
panel.add(aRadioButton);
group.add(aRadioButton);
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.WEST);
panel = new JPanel(new GridLayout(0, 1));
border = BorderFactory.createTitledBorder("Check Boxes");
panel.setBorder(border);
JCheckBox aCheckBox = new JCheckBox("Anchovies");
panel.add(aCheckBox);
aCheckBox = new JCheckBox("Garlic", true);
panel.add(aCheckBox);
aCheckBox = new JCheckBox("Onions");
panel.add(aCheckBox);
aCheckBox = new JCheckBox("Spinach");
panel.add(aCheckBox);
contentPane.add(panel, BorderLayout.EAST);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
Set pressed icon
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
public class Main {
public static void main(String[] argv) throws Exception {
JCheckBox checkbox = new JCheckBox();
Icon pressedIcon = new ImageIcon("pres-icon.gif");
checkbox.setPressedIcon(pressedIcon);
}
}
Swing CheckBox Demo
/* From http://java.sun.ru/docs/books/tutorial/index.html */
/*
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* -Redistribution of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* 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 MIDROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS 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 THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed, licensed or intended
* for use in the design, construction, operation or maintenance of any
* nuclear facility.
*/
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/*
* SwingCheckBoxDemo.java is a 1.4 application that requires 16 image files
* in the images/geek directory:
* geek-----.gif, geek-c---.gif, geek--g--.gif, geek---h-.gif, geek----t.gif,
* geek-cg--.gif, ..., geek-cght.gif.
*/
public class SwingCheckBoxDemo extends JPanel
implements ItemListener {
JCheckBox chinButton;
JCheckBox glassesButton;
JCheckBox hairButton;
JCheckBox teethButton;
/*
* Four accessory choices provide for 16 different
* combinations. The image for each combination is
* contained in a separate image file whose name indicates
* the accessories. The filenames are "geek-XXXX.gif"
* where XXXX can be one of the following 16 choices.
* The "choices" StringBuffer contains the string that
* indicates the current selection and is used to generate
* the file name of the image to display.
---- //zero accessories
c--- //one accessory
-g--
--h-
---t
cg-- //two accessories
c-h-
c--t
-gh-
-g-t
--ht
-ght //three accessories
c-ht
cg-t
cgh-
cght //all accessories
*/
StringBuffer choices;
JLabel pictureLabel;
public SwingCheckBoxDemo() {
super(new BorderLayout());
//Create the check boxes.
chinButton = new JCheckBox("Chin");
chinButton.setMnemonic(KeyEvent.VK_C);
chinButton.setSelected(true);
glassesButton = new JCheckBox("Glasses");
glassesButton.setMnemonic(KeyEvent.VK_G);
glassesButton.setSelected(true);
hairButton = new JCheckBox("Hair");
hairButton.setMnemonic(KeyEvent.VK_H);
hairButton.setSelected(true);
teethButton = new JCheckBox("Teeth");
teethButton.setMnemonic(KeyEvent.VK_T);
teethButton.setSelected(true);
//Register a listener for the check boxes.
chinButton.addItemListener(this);
glassesButton.addItemListener(this);
hairButton.addItemListener(this);
teethButton.addItemListener(this);
//Indicates what"s on the geek.
choices = new StringBuffer("cght");
//Set up the picture label
pictureLabel = new JLabel();
pictureLabel.setFont(pictureLabel.getFont().deriveFont(Font.ITALIC));
updatePicture();
/*Put the check boxes in a column in a panel*/
JPanel checkPanel = new JPanel(new GridLayout(0, 1));
checkPanel.add(chinButton);
checkPanel.add(glassesButton);
checkPanel.add(hairButton);
checkPanel.add(teethButton);
add(checkPanel, BorderLayout.LINE_START);
add(pictureLabel, BorderLayout.CENTER);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
}
/** Listens to the check boxes. */
public void itemStateChanged(ItemEvent e) {
int index = 0;
char c = "-";
Object source = e.getItemSelectable();
if (source == chinButton) {
index = 0;
c = "c";
} else if (source == glassesButton) {
index = 1;
c = "g";
} else if (source == hairButton) {
index = 2;
c = "h";
} else if (source == teethButton) {
index = 3;
c = "t";
}
//Now that we know which button was pushed, find out
//whether it was selected or deselected.
if (e.getStateChange() == ItemEvent.DESELECTED) {
c = "-";
}
//Apply the change to the string.
choices.setCharAt(index, c);
updatePicture();
}
protected void updatePicture() {
//Get the icon corresponding to the image.
ImageIcon icon = createImageIcon(
"images/geek/geek-"
+ choices.toString()
+ ".gif");
pictureLabel.setIcon(icon);
pictureLabel.setToolTipText(choices.toString());
if (icon == null) {
pictureLabel.setText("Missing Image");
} else {
pictureLabel.setText(null);
}
}
/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = SwingCheckBoxDemo.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn"t find file: " + path);
return null;
}
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
//Create and set up the window.
JFrame frame = new JFrame("SwingCheckBoxDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new SwingCheckBoxDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application"s GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Swing CheckBoxes
// : c14:SwingCheckBoxes.java
// <applet code=SwingCheckBoxes width=200 height=200></applet>
// From "Thinking in Java, 3rd ed." (c) Bruce Eckel 2002
// www.BruceEckel.ru. See copyright notice in CopyRight.txt.
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class SwingCheckBoxes extends JApplet {
private JTextArea t = new JTextArea(6, 15);
private JCheckBox cb1 = new JCheckBox("Check Box 1"), cb2 = new JCheckBox(
"Check Box 2"), cb3 = new JCheckBox("Check Box 3");
public void init() {
cb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
trace("1", cb1);
}
});
cb2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
trace("2", cb2);
}
});
cb3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
trace("3", cb3);
}
});
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JScrollPane(t));
cp.add(cb1);
cp.add(cb2);
cp.add(cb3);
}
private void trace(String b, JCheckBox cb) {
if (cb.isSelected())
t.append("Box " + b + " Set\n");
else
t.append("Box " + b + " Cleared\n");
}
public static void main(String[] args) {
run(new SwingCheckBoxes(), 200, 200);
}
public static void run(JApplet applet, int width, int height) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(applet);
frame.setSize(width, height);
applet.init();
applet.start();
frame.setVisible(true);
}
} ///:~