[JAVA100例]012、复合框[Java编程]
本文“[JAVA100例]012、复合框[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* <p>Title: 查抄盒演示</p>
* <p>Description: 挑选差别的挑选框显示差别的图片</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: 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);
}
}
以上是“[JAVA100例]012、复合框[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |