Java Tutorial/Swing/JCheckBox

Материал из Java эксперт
Перейти к: навигация, поиск

Adding an Icon to the Label of a JCheckBox Component

   <source lang="java">

import javax.swing.JCheckBox; public class Main {

 public static void main(String[] argv) throws Exception {
   JCheckBox checkbox = new JCheckBox();
String label = "<html>
<img src=file:" + "icon.gif" + "/>"
       // Retrieve the current label text
+ checkbox.getText() + "
</html>";
   // Add the icon
   checkbox.setText(label);
 }

}</source>





CheckBox List

   <source lang="java">

/*

* Copyright (C) 2005 - 2007 JasperSoft Corporation.  All rights reserved. 
* http://www.jaspersoft.ru.
*
* Unless you have purchased a commercial license agreement from JasperSoft,
* the following license terms apply:
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as published by
* the Free Software Foundation.
*
* This program is distributed WITHOUT ANY WARRANTY; and without 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 this program; if not, see http://www.gnu.org/licenses/gpl.txt
* or write to:
*
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330,
* Boston, MA  USA  02111-1307
*
*
*
*
* CheckBoxList.java
* 
* Created on October 5, 2006, 9:53 AM
*
*/

/**

*
* @author gtoffoli
*/

import java.awt.Color; import java.awt.ruponent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListModel; import javax.swing.JCheckBox; import javax.swing.JList; import javax.swing.ListSelectionModel; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; public class CheckBoxList extends JList {

 public CheckBoxList() {
   super();
   setModel(new DefaultListModel());
   setCellRenderer(new CheckboxCellRenderer());
   addMouseListener(new MouseAdapter() {
     @Override
     public void mousePressed(MouseEvent e) {
       int index = locationToIndex(e.getPoint());
       if (index != -1) {
         Object obj = getModel().getElementAt(index);
         if (obj instanceof JCheckBox) {
           JCheckBox checkbox = (JCheckBox) obj;
           checkbox.setSelected(!checkbox.isSelected());
           repaint();
         }
       }
     }
   }
   );
   setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 }
 @SuppressWarnings("unchecked")
 public int[] getCheckedIdexes() {
   java.util.List list = new java.util.ArrayList();
   DefaultListModel dlm = (DefaultListModel) getModel();
   for (int i = 0; i < dlm.size(); ++i) {
     Object obj = getModel().getElementAt(i);
     if (obj instanceof JCheckBox) {
       JCheckBox checkbox = (JCheckBox) obj;
       if (checkbox.isSelected()) {
         list.add(new Integer(i));
       }
     }
   }
   int[] indexes = new int[list.size()];
   for (int i = 0; i < list.size(); ++i) {
     indexes[i] = ((Integer) list.get(i)).intValue();
   }
   return indexes;
 }
 @SuppressWarnings("unchecked")
 public java.util.List getCheckedItems() {
   java.util.List list = new java.util.ArrayList();
   DefaultListModel dlm = (DefaultListModel) getModel();
   for (int i = 0; i < dlm.size(); ++i) {
     Object obj = getModel().getElementAt(i);
     if (obj instanceof JCheckBox) {
       JCheckBox checkbox = (JCheckBox) obj;
       if (checkbox.isSelected()) {
         list.add(checkbox);
       }
     }
   }
   return list;
 }

} /*

* Copyright (C) 2005 - 2007 JasperSoft Corporation. All rights reserved.
* http://www.jaspersoft.ru.
* 
* Unless you have purchased a commercial license agreement from JasperSoft, the
* following license terms apply:
* 
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
* 
* This program is distributed WITHOUT ANY WARRANTY; and without 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
* this program; if not, see http://www.gnu.org/licenses/gpl.txt or write to:
* 
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA USA
* 02111-1307
* 
* 
* 
* 
* CheckboxCellRenderer.java
* 
* Created on October 5, 2006, 10:03 AM
* 
*/

/**

* 
* @author gtoffoli
*/

class CheckboxCellRenderer extends DefaultListCellRenderer {

 protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
 public Component getListCellRendererComponent(JList list, Object value, int index,
     boolean isSelected, boolean cellHasFocus) {
   if (value instanceof CheckBoxListEntry) {
     CheckBoxListEntry checkbox = (CheckBoxListEntry) value;
     checkbox.setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
     if (checkbox.isRed()) {
       checkbox.setForeground(Color.red);
     } else {
       checkbox.setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
     }
     checkbox.setEnabled(isEnabled());
     checkbox.setFont(getFont());
     checkbox.setFocusPainted(false);
     checkbox.setBorderPainted(true);
     checkbox.setBorder(isSelected ? UIManager.getBorder("List.focusCellHighlightBorder")
         : noFocusBorder);
     return checkbox;
   } else {
     return super.getListCellRendererComponent(list, value.getClass().getName(), index,
         isSelected, cellHasFocus);
   }
 }

} /*

* Copyright (C) 2005 - 2007 JasperSoft Corporation. All rights reserved.
* http://www.jaspersoft.ru.
* 
* Unless you have purchased a commercial license agreement from JasperSoft, the
* following license terms apply:
* 
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
* 
* This program is distributed WITHOUT ANY WARRANTY; and without 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
* this program; if not, see http://www.gnu.org/licenses/gpl.txt or write to:
* 
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA USA
* 02111-1307
* 
* 
* 
* 
* CheckBoxListEntry.java
* 
* Created on October 5, 2006, 10:19 AM
* 
*/

/**

* 
* @author gtoffoli
*/

class CheckBoxListEntry extends JCheckBox {

 private Object value = null;
 private boolean red = false;
 public CheckBoxListEntry(Object itemValue, boolean selected) {
   super(itemValue == null ? "" : "" + itemValue, selected);
   setValue(itemValue);
 }
 public boolean isSelected() {
   return super.isSelected();
 }
 public void setSelected(boolean selected) {
   super.setSelected(selected);
 }
 public Object getValue() {
   return value;
 }
 public void setValue(Object value) {
   this.value = value;
 }
 public boolean isRed() {
   return red;
 }
 public void setRed(boolean red) {
   this.red = red;
 }

}</source>





Check if a JCheckBox is selected in its item change listener

   <source lang="java">

import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JCheckBox; import javax.swing.JFrame; public class Main extends JFrame {

 JCheckBox check = new JCheckBox("Checkbox", false);
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   check.addItemListener(new ItemListener() {
     public void itemStateChanged(ItemEvent e) {
       System.out.println("Checked? " + check.isSelected());
     }
   });
   getContentPane().add(check);
   pack();
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}</source>





Creating JCheckBox Components

   <source lang="java">

public JCheckBox() JCheckBox aCheckBox = new JCheckBox(); public JCheckBox(Icon icon) JCheckBox aCheckBox = new JCheckBox(new DiamondIcon(Color.RED, false)); aCheckBox.setSelectedIcon(new DiamondIcon(Color.PINK, true)); public JCheckBox(Icon icon, boolean selected) JCheckBox aCheckBox = new JCheckBox(new DiamondIcon(Color.RED, false), true); aCheckBox.setSelectedIcon(new DiamondIcon(Color.PINK, true)); public JCheckBox(String text) JCheckBox aCheckBox = new JCheckBox("Spinach"); public JCheckBox(String text, boolean selected) JCheckBox aCheckBox = new JCheckBox("Onions", true); public JCheckBox(String text, Icon icon) JCheckBox aCheckBox = new JCheckBox("Garlic", new DiamondIcon(Color.RED, false)); aCheckBox.setSelectedIcon(new DiamondIcon(Color.PINK, true)); public JCheckBox(String text, Icon icon, boolean selected) JCheckBox aCheckBox = new JCheckBox("Anchovies", new DiamondIcon(Color.RED, false), true); aCheckBox.setSelectedIcon(new DiamondIcon(Color.PINK, true)); public JCheckBox(Action action) Action action = ...; JCheckBox aCheckBox = new JCheckBox(action);</source>





Customizing JCheckBox Check Mark Icon

   <source lang="java">

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.Color; import java.awt.ruponent; import java.awt.Graphics; import java.awt.GridLayout; import javax.swing.AbstractButton; import javax.swing.ButtonModel; import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JFrame; class CheckBoxIcon implements Icon {

 public void paintIcon(Component component, Graphics g, int x, int y) {
   AbstractButton abstractButton = (AbstractButton)component;
   ButtonModel buttonModel = abstractButton.getModel();
   
   Color color = buttonModel.isSelected() ?  Color.BLUE : Color.RED;
   g.setColor(color);
   
   g.drawRect(1, 1, 20,20);
   
 }
 public int getIconWidth() {
   return 20;
 }
 public int getIconHeight() {
   return 20;
 }

} public class IconCheckBoxSample {

 public static void main(String args[]) {
       JFrame frame = new JFrame("Iconizing CheckBox");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       Icon checked = new CheckBoxIcon();
       Icon unchecked = new CheckBoxIcon();
       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);
       frame.setLayout(new GridLayout(0,1));
       frame.add(aCheckBox1);
       frame.add(aCheckBox2);
       frame.add(aCheckBox3);
       frame.add(aCheckBox4);
       frame.setSize(300, 200);
       frame.setVisible(true);
 }

}</source>





Customizing JCheckBox Look and Feel

Property StringObject TypeCheckBox.backgroundColorCheckBox.borderBorderCheckBox.darkShadowColorCheckBox.disabledTextColorCheckBox.focusColorCheckBox.focusInputMapObject[ ]CheckBox.fontFontCheckBox.foregroundColorCheckBox.gradientListCheckBox.highlightColorCheckBox.iconIconCheckBox.interiorBackgroundColorCheckBox.lightColorCheckBox.marginInsetsCheckBox.rolloverBooleanCheckbox.selectColorCheckBox.shadowColorCheckBox.textIconGapIntegerCheckBox.textShiftOffsetIntegerCheckBoxUIString


Display an icon when the cursor is moved over the checkbox. This is called the rollover icon.

   <source lang="java">

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);
 }

}</source>





Event firing sequence: ActionListener, ItemListener and ChangeListener

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; 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 {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Selecting CheckBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JCheckBox checkBox = new JCheckBox("A");
   // Define ActionListener
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();
       boolean selected = abstractButton.getModel().isSelected();
       String newLabel = (selected ? "A" : "B");
       abstractButton.setText(newLabel);
     }
   };
   // Define ChangeListener
   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);
     }
   };
   // Define ItemListener
   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);
       }
     }
   };
   // Attach Listeners
   checkBox.addActionListener(actionListener);
   checkBox.addChangeListener(changeListener);
   checkBox.addItemListener(itemListener);
   checkBox.setMnemonic(KeyEvent.VK_S);
   frame.add(checkBox, BorderLayout.NORTH);
   frame.setSize(300, 100);
   frame.setVisible(true);
 }

}</source>





Getting and Setting the State of a JCheckbox Component

   <source lang="java">

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);
 }

}</source>





JCheckBox.setMnemonic

   <source lang="java">

/*

* Copyright (c) 1995 - 2008 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:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions 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 nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

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; /*

* CheckBoxDemo.java 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 CheckBoxDemo 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 CheckBoxDemo() {
   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 = CheckBoxDemo.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() {
   // Create and set up the window.
   JFrame frame = new JFrame("CheckBoxDemo");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   // Create and set up the content pane.
   JComponent newContentPane = new CheckBoxDemo();
   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();
     }
   });
 }

}</source>





Listening to JCheckBox Events with a ChangeListener: listen to armed, pressed, selected, or released state

   <source lang="java">

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 JCheckBoxChangeListener {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Iconizing CheckBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JCheckBox aCheckBox4 = new JCheckBox("Stuffed Crust");
   // Define ChangeListener
   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);
     }
   };
   aCheckBox4.addChangeListener(changeListener);
   frame.add(aCheckBox4);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>



Changed: false/false/false
Changed: true/false/false
Changed: true/true/false
Changed: true/true/true
Changed: true/false/true
Changed: false/false/true
Changed: false/false/true


Listening to JCheckBox Events with an ActionListener

   <source lang="java">

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import javax.swing.JCheckBox; import javax.swing.JFrame; public class JCheckBoxActionListener {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Iconizing CheckBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JCheckBox aCheckBox4 = new JCheckBox("Stuffed Crust");
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();
       boolean selected = abstractButton.getModel().isSelected();
       System.out.println(selected);
       // abstractButton.setText(newLabel);
     }
   };
   aCheckBox4.addActionListener(actionListener);
   frame.add(aCheckBox4);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Listening to JCheckBox Events with an ItemListener

   <source lang="java">

import java.awt.Color; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.AbstractButton; import javax.swing.JCheckBox; import javax.swing.JFrame; public class JCheckBoxItemListener {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Iconizing CheckBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JCheckBox aCheckBox4 = new JCheckBox("Stuffed Crust");
   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);
       }
     }
   };
   aCheckBox4.addItemListener(itemListener);
   frame.add(aCheckBox4);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Using JCheckBox

   <source lang="java">

import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; public class JCheckBoxTest {

 public static void main(String[] args) {
   JFrame.setDefaultLookAndFeelDecorated(true);
   JFrame frame = new JFrame("JCheckBox Test");
   frame.setLayout(new FlowLayout());
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JCheckBox ac = new JCheckBox("A/C");
   ac.setSelected(true);
   JCheckBox cdPlayer = new JCheckBox("A");
   JCheckBox cruiseControl = new JCheckBox("B");
   JCheckBox keylessEntry = new JCheckBox("C");
   JCheckBox antiTheft = new JCheckBox("D");
   JCheckBox centralLock = new JCheckBox("E");
   frame.add(new JLabel("Car Features"));
   frame.add(ac);
   frame.add(cdPlayer);
   frame.add(cruiseControl);
   frame.add(keylessEntry);
   frame.add(antiTheft);
   frame.add(centralLock);
   frame.pack();
   frame.setVisible(true);
 }

}</source>