Java中awt基本组件及其使用方法

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);
    }
    }

运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值