1,按钮
此类创建一个标签按钮。当按下该按钮时,应用程序能执行某项动作。它有两种构造方法:
public Button()
构造一个标签字符串为空的按钮。
public Button(String label)
构造一个带指定标签的按钮。
当用户鼠标单击按钮时,AWT事件处理系统将向按钮发送一个ActionEvent事件对象,如果应用程序需要对此做出反应,那么就需要注册事件监听程序并实现ActionListener接口。
public void addActionListener(ActionListener l)添加指定的动作侦听器,以接收发自此按钮的动作事件。当用户在此按钮上按下或释放鼠标时,发生动作事件。如果 l 为 null,则不抛出任何异常,也不执行任何动作。
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @author Amy E-mail:chuxiumin03@126.com
* @date 创建时间:2017年10月9日 上午11:05:20
* @version 1.0
*/
public class TestButton {
/**
* @Title: main
* @Description: TODO(使用AWT图形用户界面的Button组件例子)
* @param args
* @return: void
* @throws
*/
public static void main(String[] args) {
String s1="You have Pressed the Button";
String s2="You have released the Button";
Frame frame = new Frame();
Button button = new Button("click me");
TextField tf = new TextField();
button.setForeground(Color.blue);
frame.setTitle("button example");
frame.add(tf,BorderLayout.CENTER);
frame.add(button,BorderLayout.SOUTH);
frame.setVisible(true);
frame.pack();
// 窗体关闭
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}});
// 增加鼠标响应事件
button.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
tf.setText(s2);
}
@Override
public void mousePressed(MouseEvent e) {
tf.setText(s1);
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
}
}
运行结果:
2,复选框
public class Checkbox extends Component implements ItemSelectable, Accessible
复选框是一个可处于“开”(true) 或“关”(false) 状态的图形组件。单击复选框可将其状态从“开”更改为“关”,或从“关”更改为“开”。
构造方法有四种:
Checkbox()
使用空字符串标签创建一个复选框。
Checkbox(String label)
使用指定标签创建一个复选框。
Checkbox(String label, boolean state)
使用指定标签创建一个复选框,并将它设置为指定状态。
Checkbox(String label, boolean state, CheckboxGroup group)
构造具有指定标签的 Checkbox,并将它设置为指定状态,使它处于指定复选框组中。
Checkbox(String label, CheckboxGroup group, boolean state)
创建具有指定标签的 Checkbox,并使它处于指定复选框组内,将它设置为指定状态。
方法摘要:
addItemListener(ItemListener l)
添加指定的项侦听器,以接收来自此复选框的项事件。
要想对复选框进行相应就需要实现ItemListener内部的itemStateChanged方法。通过ItemEvent的getItemSelectable可以获得改变的复选框对象,通过getStateChange可以获得改变后的状态。
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import javax.print.DocFlavor.URL;
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;
import javax.swing.SwingUtilities;
/**
* @author Amy E-mail:chuxiumin03@126.com
* @date 创建时间:2017年10月9日 下午3:19:06
* @version 1.0
*/
public class TestCheckBox extends JPanel implements ItemListener {
/**
* @Title: main
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param args
* @return: void
* @throws
*/
/**
*
*/
JCheckBox chin;
JCheckBox glass;
JCheckBox hire;
JCheckBox teeth;
StringBuffer choice;
JLabel labelPicture;
public TestCheckBox() {
super(new BorderLayout());
//创建复选框按键,并设置快捷键,和选定
chin = new JCheckBox("chin");
chin.setMnemonic(KeyEvent.VK_C);
chin.setSelected(true);
glass= new JCheckBox("glass");
glass.setMnemonic(KeyEvent.VK_G);
glass.setSelected(true);
hire = new JCheckBox("hire");
hire.setMnemonic(KeyEvent.VK_H);
hire.setSelected(true);
teeth = new JCheckBox("teeth");
teeth.setMnemonic(KeyEvent.VK_T);
teeth.setSelected(true);
//设置一个panel,将复选框放入同一个panel
JPanel checkPanel = new JPanel(new GridLayout(0,1));
checkPanel.add(chin);
checkPanel.add(glass);
checkPanel.add(hire);
checkPanel.add(teeth);
//添加复选框的监听事件
chin.addItemListener(this);
glass.addItemListener(this);
hire.addItemListener(this);
teeth.addItemListener(this);
//将复选框的panel添加到面板的左边
add(checkPanel,BorderLayout.WEST);
//创建图片显示区
labelPicture = new JLabel();
//将图片显示区放到面板中间
add(labelPicture,BorderLayout.CENTER);
//设置面板的边界,使得控件能够与边界有一定距离
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
//设置初始图片
choice = new StringBuffer("cght");
//显示更新图片
upDatePicture();
}
private void upDatePicture() {
ImageIcon ii = createImageIcon(File.separator+"images"+
File.separator+"geek"+
File.separator+"geek-"+
choice.toString()+".gif");
labelPicture.setIcon(ii);
}
private ImageIcon createImageIcon(String string) {
java.net.URL url = TestCheckBox.class.getResource(string);
if(url != null)
return new ImageIcon(url);
else
System.out.println("image "+string +"not exist!");
return null;
}
public static void createAndShowGUI()
{
JFrame frame = new JFrame("复选框测试");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent panel = new TestCheckBox();
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
//接受处理复选框点击事件
@Override
public void itemStateChanged(ItemEvent e) {
//获取改变的复选按键
Object source = e.getItemSelectable();
int index = -1;
char c = '-';
if (source==chin) {
index = 0;
c = 'c';
} else if(source == glass){
index = 1;
c = 'g';
}else if(source == hire){
index = 2;
c = 'h';
}else if(source == teeth)
{
index = 3;
c = 't';
}
//判断改变的按键的改变后的状态
if(e.getStateChange() == ItemEvent.DESELECTED)
c = '-';
choice.setCharAt(index, c);
upDatePicture();
}
}
运行结果:
3,单选框
public class JRadioButton extends JToggleButton implements Accessible
实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。与 ButtonGroup 对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。(创建一个 ButtonGroup 对象并用其 add 方法将 JRadioButton 对象包含在此组中。)
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* @author Amy E-mail:chuxiumin03@126.com
* @date 创建时间:2017年10月9日 下午6:04:32
* @version 1.0
*/
public class SingleBoxDemo {
/**
* @Title: main
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param args
* @return: void
* @throws
*/
public static void main(String[] args) {
SingleBox sb=new SingleBox();
sb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sb.setVisible(true);
sb.setTitle("SingleBox");
}
}
class SingleBox extends JFrame{
private JLabel label;
private JPanel buttonPanel;
private static final int DEFAULT_SIZE=36;
private ButtonGroup group;
public SingleBox(){
setSize(400,300);
label=new JLabel("Wasting yout time is equals to wasting yout life");
label.setFont(new Font("Serif",Font.PLAIN,DEFAULT_SIZE));
add(label,BorderLayout.CENTER);
group=new ButtonGroup();
buttonPanel=new JPanel();
addRadioButton("Small",8);
addRadioButton("Mediun",12);
addRadioButton("Large",18);
addRadioButton("Extra large",36);
add(buttonPanel,BorderLayout.SOUTH);
}
public void addRadioButton(String name,final int size){
boolean selected=size==DEFAULT_SIZE;
JRadioButton Button=new JRadioButton(name,selected);
group.add(Button);
buttonPanel.add(Button);
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setFont(new Font("Serif",Font.PLAIN, size));
}
};
Button.addActionListener(actionListener);
}
}
运行结果: