java swing 复选JCheckBox组件美化

初始化:


勾选之后



源代码:

<span style="font-size:14px;">import java.io.File ;
import java.awt.event.WindowEvent ;
import java.awt.event.WindowListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.ItemEvent ;
import java.awt.Container ;
import java.awt.event.ItemListener ;
import java.awt.GridLayout ;
import javax.swing.JFrame ;
import javax.swing.JCheckBox ;
import javax.swing.JPanel ;
import javax.swing.ImageIcon ;
import javax.swing.BorderFactory ;

class MyItemListener implements ItemListener
{
  private String right = "d:"+File.separator+"right.png" ;
  private String wrong = "d:"+File.separator+"wrong.gif" ;
  public void itemStateChanged(ItemEvent e)
  {
      JCheckBox jcb = (JCheckBox)e.getItem() ;
      {
         if(jcb.isSelected())
         {
            jcb.setIcon(new ImageIcon(right)) ;
         }else jcb.setIcon(new ImageIcon(wrong)) ;
      }
  } 
} ;

class MyCheckBox
{
   private JFrame frame = new JFrame() ;
   private String wrong = "d:"+File.separator+"wrong.gif" ;
   private Container con = frame.getContentPane() ;
   private JPanel pan = new JPanel() ;
   JCheckBox jcb1 = new JCheckBox("学生",new ImageIcon(wrong)) ;
   JCheckBox jcb2 = new JCheckBox("成年人",new ImageIcon(wrong)) ;
   JCheckBox jcb3 = new JCheckBox("男孩",new ImageIcon(wrong)) ;
  
   public MyCheckBox()
   {
      pan.setBorder(BorderFactory.createTitledBorder("选择人物属性")) ;
      pan.setLayout(new GridLayout(1,3)) ;
      pan.add(jcb1) ;
      pan.add(jcb2) ;
      pan.add(jcb3) ;
     
      jcb1.addItemListener(new MyItemListener()) ;
      jcb2.addItemListener(new MyItemListener()) ;
      jcb3.addItemListener(new MyItemListener()) ;
     
      con.add(pan) ;
      this.frame.setSize(300,300) ;
      this.frame.setVisible(true) ;
      this.frame.addWindowListener(new WindowAdapter()
      {
           public void windowClosing(WindowEvent e)
           {
              System.exit(1) ;
           }
      }) ;
     
   }
} ;

class Tester
{
   public static void main(String args[])
   {
       new MyCheckBox() ;  
   }
}
</span>


原文地址:https://www.cnblogs.com/emoji/p/4436814.html