[JAVA100例]012、复合框

静觉悟雪

静觉悟雪

2016-02-19 15:37

下面图老师小编跟大家分享[JAVA100例]012、复合框,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

  

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 * pTitle: 检查盒演示/p
 * pDescription: 选择不同的选择框显示不同的图片/p
 * pCopyright: Copyright (c) 2003/p
 * pFilename: CheckBoxDemo.java/p
 * @version 1.0
 */
public class CheckBoxDemo extends JPanel
             implements ItemListener {
  JCheckBox chinButton;
  JCheckBox glassesButton;
  JCheckBox hairButton;
  JCheckBox teethButton;
/*
   * 有四个检查盒,分别对应下巴、眼镜、头发和牙齿
   * 图片不是拼出来的,而是根据检查盒选择拼写图片文件名
   * 图片文件名的定义格式为"geek-XXXX.gif"
   * 其中 XXXX 根据检查盒的不同选择,而不同。它的格式如下:
----       //没有选择
c---       //一个选择
    -g--
    --h-
    ---t
cg--       //两个选择
    c-h-
    c--t
    -gh-
    -g-t
    --ht
-ght       //三个选择
    c-ht
    cg-t
    cgh-
cght       //所有都选
   */
StringBuffer choices;
  JLabel pictureLabel;
public CheckBoxDemo() {
    super(new BorderLayout());
//创建检查盒
     chinButton = new JCheckBox("下巴(c)");
     chinButton.setMnemonic(KeyEvent.VK_C);
    chinButton.setSelected(true);
glassesButton = new JCheckBox("眼镜(g)");
     glassesButton.setMnemonic(KeyEvent.VK_G);
    glassesButton.setSelected(true);
hairButton = new JCheckBox("头发(h)");
     hairButton.setMnemonic(KeyEvent.VK_H);
    hairButton.setSelected(true);
teethButton = new JCheckBox("牙齿(t)");
     teethButton.setMnemonic(KeyEvent.VK_T);
    teethButton.setSelected(true);
//给检查盒添加监听
     chinButton.addItemListener(this);
     glassesButton.addItemListener(this);
     hairButton.addItemListener(this);
    teethButton.addItemListener(this);
choices = new StringBuffer("cght");
//放置一个带图片的标签
     pictureLabel = new JLabel();
     pictureLabel.setFont(pictureLabel.getFont().deriveFont(Font.ITALIC));
    updatePicture();
//将检查盒放置到面版中
     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));
   }
/**
 *br方法说明:监听检查盒事件,拼凑图片的文件名XXXX部分
 *br输入参数:
 *br返回类型:
 */
   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 = ´-´;
    }
//改变文件名字XXXX
    choices.setCharAt(index, c);
updatePicture();
   }
/**
 *br方法说明:绘制图片
 *br输入参数:
 *br返回类型:
 */
   protected void updatePicture() {
     //将得到的图片制成图标
     ImageIcon icon = createImageIcon(
                   "images/geek/geek-"
                   + choices.toString()
                   + ".gif");
     pictureLabel.setIcon(icon);
     pictureLabel.setToolTipText(choices.toString());
     if (icon == null) {
       pictureLabel.setText("没有发现图片");
     } else {
       pictureLabel.setText(null);
     }
   }
/**
 *br方法说明:获取图标
 *br输入参数:String path 图片路径
 *br返回类型:ImageIcon对象
 */
   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;
     }
   }
/**
 *br方法说明:主方法
 *br输入参数:
 *br返回类型:
 */
   public static void main(String s[]) {
     JFrame.setDefaultLookAndFeelDecorated(true);
//创建一个窗体,
     JFrame frame = new JFrame("CheckBoxDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建一个面板
     JComponent newContentPane = new CheckBoxDemo();
     newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);
//显示窗体
     frame.pack();
     frame.setVisible(true);
   }
}

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

[JAVA100例]012、复合框

编程语言 网络编程
[JAVA100例]012、复合框

[JAVA100例]017、文件对话框

编程语言 网络编程
[JAVA100例]017、文件对话框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

[JAVA100例]060、继承Thread

编程语言 网络编程
[JAVA100例]060、继承Thread

[JAVA100例]001、Hello,Java

编程语言 网络编程
[JAVA100例]001、Hello,Java

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

[JAVA100例]011、按钮

编程语言 网络编程
[JAVA100例]011、按钮

[JAVA100例]061、实现Runnable

编程语言 网络编程
[JAVA100例]061、实现Runnable

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

CSS基础知识:padding与line-height的区别

CSS基础知识:padding与line-height的区别

Mac OS X如何关闭Dashboard

Mac OS X如何关闭Dashboard
下拉加载更多内容 ↓