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

简介: package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.
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();
    }

}

案例运行结果如下


目录
相关文章
|
8天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
22 0
|
9天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
18 1
|
9天前
|
消息中间件 监控 安全
【JAVAEE学习】探究Java中多线程的使用和重点及考点
【JAVAEE学习】探究Java中多线程的使用和重点及考点
|
9天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
18 0
|
10天前
|
Java
【专栏】如何在 Java 8 中使用 Streams?结合多种案例剖析学习!
【4月更文挑战第28天】Java 8 的 Streams 提供了一种处理数据集合的新方式,增强了代码的可读性和可维护性。本文介绍了 Streams 的基本概念,如从数据源创建 Stream,以及中间和终端操作。通过过滤、映射、归并、排序、分组等案例,展示了 Streams 的使用,包括并行 Streams 提高效率。学习 Streams 可以提升代码质量和效率,文章鼓励读者在实际开发中探索更多 Streams 功能。
|
10天前
|
存储 监控 Java
Java 零基础入门学习(小白也能看懂!)四
Java 零基础入门学习(小白也能看懂!)四
|
10天前
|
存储 安全 Java
Java 零基础入门学习(小白也能看懂!)三
Java 零基础入门学习(小白也能看懂!)三
|
10天前
|
存储 机器学习/深度学习 Java
Java 零基础入门学习(小白也能看懂!)二
Java 零基础入门学习(小白也能看懂!)二
|
10天前
|
Java 编译器 程序员
Java 零基础入门学习(小白也能看懂!)一
Java 零基础入门学习(小白也能看懂!)一
|
10天前
|
Java
Java学习——类与对象(二)
Java学习——类与对象(二)