JAVA学习Swing章节按钮组件JButton的简单学习

package com.swing;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

/**
 * 1:按钮在Swing中是较为常见的组件,用于触发特定动作
 * Swing中提供了多种按钮,包括提交按钮,复选框,单选按钮等
 * 这些按钮都是从AbstractButton类中继承而来的
 * 
 * 2:Swing中的提交按钮组件(JButton)由JButton对象表示
 * JButton含有4种主要的构造方法
 * 参数text,icon分别代表显示文字标签和图标
 * 
 * 3:本实例使用了两种方式创建按钮,第一种是在初始化按钮时赋予按钮图标与文字
 * 这种初始化必须先获得图片路径,然后将路径实例化到Icon,然后在Button中加载出来
 * 第二种方式是首先创建一个没有定义图标和文字的按钮对象,然后使用
 * setIcon()方法为这个按钮定制一个图标。
 * setToolTipText()方法是为按钮设置提示文字,鼠标停留在按钮上面即可
 * setBorderPainted()方法设置边界是否显示
 * setMaximumSize()方法设置按钮的大小与图标的大小一致,该类方法需要的参数类型是
 *           Dimension类对象,这样看上去此图片就如同按钮一样摆放在窗体中,
 *           同时也可以使用setEnabled()方法设置按钮是否可用
 * 
 * @author biexiansheng
 *
 */
public class JButtonTest extends JFrame{

    public JButtonTest(){//定义一个构造方法
        //获取图片所在的URL    以下2行代码需要额外注意
        URL url=JButtonTest.class.getResource("imageButtoo.jpg");
        Icon icon=new ImageIcon(url);//实例化Icon对象
        
        //设置网格布局管理器   3行2列  水平5垂直5
        setLayout(new GridLayout(3,2,5,5));
        
        //创建容器
        Container container=getContentPane();
        for(int i=0;i<5;i++){//创建按钮,同时设置按钮文字和图标
            JButton jb=new JButton("button"+i,icon);
            container.add(jb);//将按钮添加到容器中
            if(i%2==0){
                jb.setEnabled(false);//设置其中一些按钮不可用
            }
        }//上下位两种按钮的实例化
        
        JButton jb2=new JButton();//实例化一个没有文字与图片的按钮
        jb2.setMaximumSize(new Dimension(90,30));//设置按钮和图片的大小相同
        jb2.setIcon(icon);//为按钮设置图标
        jb2.setHideActionText(true);
        jb2.setToolTipText("图片按钮");//设置按钮提示为文字
        jb2.setBorderPainted(false);//设置按钮边界不显示
        jb2.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                //弹出对话框
                JOptionPane.showMessageDialog(null, "弹出对话框");
            }
        });
        container.add(jb2);//将按钮添加到容器中
        
        setTitle("提交按钮组件按钮小试牛刀");//设置窗口标题
        setVisible(true);//设置窗口可视化
        setSize(500,550);//设置窗口的大小
        //设置窗口的关闭方式
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JButtonTest jb=new JButtonTest();
    }

}

案例运行结果如下

package com.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

/**
 * 1:复选框组件JCheckBox
 * 其在Swing组件中的使用也非常广泛,它具有一个方性图标,外加一段描述性文字
 * 复选框区别于单选按钮就是每一个复选框都提供了选中和不选中两种状态
 * 
 * @author biexiansheng
 *
 */
public class CheckBoxTest extends JFrame{
    
    private JPanel jp1=new JPanel();//初始化面板对象
    private JPanel jp2=new JPanel();//
    //如果加入滚动面板必须先加入JTextArea并且一定要指定编译器的大小
    private JTextArea jt=new JTextArea(20,50);//创建文本域组件
    private JCheckBox jc1=new JCheckBox();//实例化复选按钮
    private JCheckBox jc2=new JCheckBox();//
    private JCheckBox jc3=new JCheckBox();//
    
    
    public CheckBoxTest(){//定于一个构造方法
        Container container=getContentPane();//创建一个容器
        
        //设置布局管理器
        container.setLayout(new BorderLayout());//初始化边界布局管理器
    
        container.add(jp1,BorderLayout.NORTH);//添加到容器中
        final JScrollPane js=new JScrollPane(jt);//创建JScrollPane面板对象
        /*如果需要在JScrollPane面板中放置多个组件,需要将多个组件放置在JPanel面板上
         * 然后将JPanel面板作为一个整体组件添加在JScrollPane组件上 * */
        jp1.add(js);
        
        container.add(jp2, BorderLayout.SOUTH);
        jp2.add(jc1);
        jc1.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                jt.append("复选框1被选中\n");
            }
        });
        
        jp2.add(jc2);
        jc2.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                jt.append("复选框2被选中\n");
            }
        });
        
        jp2.add(jc3);
        jc3.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                jt.append("复选框3被选中\n");
            }
        });
        
        setTitle("复选框的使用");
        setSize(600,650);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CheckBoxTest cb=new CheckBoxTest();
        //实例化时调用构造方法
    }

}

实例运行结果如下

为了区别运行想过,特别添加了颜色运行效果清晰区别

也熟悉一下各个面板颜色的控制

package com.swing;

import java.awt.Container;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.WindowConstants;

/**
 * 1:在默认情况下,单选按钮JRadioButton显示一个圆形图标,并且通常在该图标旁放置
 * 一些说明性文字,而在应用程序中,一般将多个单选按钮放置在按钮组中,使这些单选按钮
 * 表现出某种功能,当用户选中某个单选按钮后,按钮组中其他按钮将被自动取消。
 * 
 * 2:单选按钮是Swing组件中JRadioButton类的对象,该类是JToggleButton的子类
 * 而JToggleButton类又是AbstractButton类的子类,所以控制单选按钮的诸多方法都是
 * AbstractButton类中的方法。
 * 
 * 3:在Swing中存在一个ButtonGroup类,用于产生按钮组。
 * 如果希望将所有的单选按钮放置在按钮组中,需要实例化一个JRadioButton对象
 * 并且用该对象调用add()方法添加单选按钮
 * @author biexiansheng
 *
 */
public class JRadioButtonTest extends JFrame{

    private JRadioButton jr1=new JRadioButton();
    private JRadioButton jr2=new JRadioButton();
    private JRadioButton jr3=new JRadioButton();//初始化单选按钮
    //实例化单选按钮组
    private ButtonGroup group=new ButtonGroup();
    private JPanel jp=new JPanel();//初始化面板
    
    public JRadioButtonTest(){
        Container container=getContentPane();//创建一个容器
    
        
        group.add(jr1);
        group.add(jr2);
        group.add(jr3);
        
        jp.add(jr1);
        jp.add(jr2);
        jp.add(jr3);//将单选按钮添加到面板中
        
        container.add(jp);//将面板添加到容器中
        //设置容器的特性
        setTitle("单选按钮的简单练习");//容器的标题
        setVisible(true);//可视化
        setSize(200,150);//容器的大小
        //设置容器的关闭方式
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JRadioButtonTest jb=new JRadioButtonTest();
    }

}

简单实例运行结果如下

此简例只是简单的描写了如何实现单选按钮,并没有产生反应,仅是案例演示

package com.swing;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.WindowConstants;

public class Test extends JFrame{

    private JRadioButton jr1;
    private JRadioButton jr2;
    private ButtonGroup bg1;
    
    private JCheckBox cb1;
    private JCheckBox cb2;
    private JCheckBox cb3;
    
    
    private JLabel jl1;
    private JLabel jl2;
    
    private JPanel jp1;
    private JPanel jp2;
    private JPanel jp3;
    
    private JButton jb1;
    private JButton jb2;
    public Test(){
        Container container=getContentPane();//创建一个容器
        cb1=new JCheckBox("篮球");
        cb2=new JCheckBox("足球");
        cb3=new JCheckBox("排球");
        
        jl1=new JLabel("你喜欢的运动");
        jl2=new JLabel("你的性别");
        
        jb1=new JButton("提交");
        jb2=new JButton("重置");
        
        jr1=new JRadioButton("男");
        jr2=new JRadioButton("女");
        bg1=new ButtonGroup();
        
        setLayout(new GridLayout(3, 1));//设置网格布局管理器3行1列
        jp1=new JPanel();
        jp1.add(jl1);
        jp1.add(cb1);//将单选按钮添加到面板上面
        jp1.add(cb2);
        jp1.add(cb3);
        container.add(jp1);
        
        jp2=new JPanel();
        jp2.add(jl2);
        bg1.add(jr1);//将单选按钮添加到ButtonGroup中
        bg1.add(jr2);
        jp2.add(jr1);
        jp2.add(jr2);
        container.add(jp2);
        
        jp3=new JPanel();
        jp3.add(jb1);
        jp3.add(jb2);
        container.add(jp3);
        setTitle("按钮的运用");
        setSize(400,300);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Test();
    }

}

案例运行结果如下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一“技”之长

Java开发GUI之BorderLayout边界布局

    前面博客中所提及的例子都是针对单独的视图组件,将组件组合并布局在合适的位置才能算是完整的界面。Java中的布局采用布局管理器模式进行,提供了跨平台性,B...

802
来自专栏听雨堂

Android新手之旅(9) 自定义的折线图

  希望实现一个折线图,但没有找到合适的控件或者代码,只有一个基本样子的,在它的基础上,进行了一些改进,改得比较灵活,可以传递参数,可以设置位置,坐标轴长度,刻...

2397
来自专栏听雨堂

Android新手之旅(9) 自定义的折线图

  希望实现一个折线图,但没有找到合适的控件或者代码,只有一个基本样子的,在它的基础上,进行了一些改进,改得比较灵活,可以传递参数,可以设置位置,坐标轴长度,刻...

3046
来自专栏一“技”之长

iOS开发CoreAnimation解读之四——Layer层动画内容

        通过前几篇博客的介绍,我们可以了解到layer层可以设置许多与控件UI相关的属性,并且对于iOS开发,UIView层的属性是会映射到CALaye...

811
来自专栏海说

8、单选按钮(JRadioButton)和复选框(JCheckBox)

单选按钮(JRadioButton)和复选框(JCheckBox)       实现一个单选按钮(或复选框),此按钮项可被选择或取消选择,并显示其状态。JRad...

1940
来自专栏hightopo

原 快速创建 HTML5 Canvas 电

1842
来自专栏Java帮帮-微信公众号-技术文章全总结

Java开发画板

Test类 public class Test { public static void main(String[] args){ ...

3795
来自专栏用户2442861的专栏

CSS技巧(一):清除浮动

http://www.cnblogs.com/ForEvErNoME/p/3383539.html

491
来自专栏Keegan小钢

Android样式的开发:Property Animation篇

前篇文章说过,Android框架还提供了两种动画体系,前一篇已经总结了视图动画(View Animation)的用法,本篇则接着总结另一种动画体系——属性动画(...

753
来自专栏王金龙的专栏

IE6浏览器常见的bug及其修复方法

1033

扫码关注云+社区