⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkbox.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch02.section05;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CheckBox
    extends JPanel {
  JCheckBox chinButton;
  JCheckBox glassesButton;
  JCheckBox hairButton;
  JCheckBox teethButton;
  StringBuffer choices;
  JLabel pictureLabel;

  public CheckBox() {

    //实现不同的复选框
    chinButton = new JCheckBox("下巴");
    chinButton.setMnemonic(KeyEvent.VK_C);
    chinButton.setSelected(true);

    glassesButton = new JCheckBox("眼镜");
    glassesButton.setMnemonic(KeyEvent.VK_G);
    glassesButton.setSelected(true);

    hairButton = new JCheckBox("帽子");
    hairButton.setMnemonic(KeyEvent.VK_H);
    hairButton.setSelected(true);

    teethButton = new JCheckBox("牙齿");
    teethButton.setMnemonic(KeyEvent.VK_T);
    teethButton.setSelected(true);

    //为所有的复选框注册事件监听
    CheckBoxListener myListener = new CheckBoxListener();
    chinButton.addItemListener(myListener);
    glassesButton.addItemListener(myListener);
    hairButton.addItemListener(myListener);
    teethButton.addItemListener(myListener);

    choices = new StringBuffer("cght");

    // 将图片设置为默认的图片
    pictureLabel = new JLabel(new ImageIcon(
        "images/geek/geek-"
        + choices.toString()
        + ".gif"));
    pictureLabel.setToolTipText(choices.toString());

    JPanel checkPanel = new JPanel();
    // 设置复选框所在容器的布局方式为0行1列的GridLayout布局方式
    checkPanel.setLayout(new GridLayout(0, 1));
    //添加复选框
    checkPanel.add(chinButton);
    checkPanel.add(glassesButton);
    checkPanel.add(hairButton);
    checkPanel.add(teethButton);
    //布局方式
    setLayout(new BorderLayout());
    add(checkPanel, BorderLayout.WEST);
    add(pictureLabel, BorderLayout.CENTER);
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  }

  /* 为复选框注册事件监听 */
  class CheckBoxListener
      implements ItemListener {
    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';
      }
      //如果没有复选框被选中
      if (e.getStateChange() == ItemEvent.DESELECTED) {
        c = '-';
      }
      choices.setCharAt(index, c);
      //设置标签图片
      pictureLabel.setIcon(new ImageIcon(
          "images/geek/geek-"
          + choices.toString()
          + ".gif"));
      pictureLabel.setToolTipText(choices.toString());
    }
  }

  public static void main(String s[]) {
    JFrame frame = new JFrame("CheckBox");
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    //显示窗口
    frame.setContentPane(new CheckBox());
    frame.pack();
    frame.setVisible(true);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -