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帮帮-微信公众号-技术文章全总结

Java基础-25(01)图形用户界面编程GUI

1:如何让Netbeans的东西Eclipse能访问。 在Eclipse中创建项目,把Netbeans项目的src下的东西给拿过来即可。 注意:修改项目编码...

3405
来自专栏24K纯开源

QLayout: Attempting to add QLayout XXX to XXX, which already has a layout

1563
来自专栏华仔的技术笔记

iOS中解码.txt文件在UIWebView出现中文乱码的问题

3434
来自专栏ml

初学java之菜单条,菜单,菜单项的设置

1 package project; 2 import javax.swing.*; 3 4 import java.awt.event.KeyEve...

2253
来自专栏别先生

JAVA学习中Swing部分JDialog对话框窗体的简单学习

package com.swing; import java.awt.Color; import java.awt.Container; import jav...

1897
来自专栏Java与Android技术栈

Java实现图片滤镜的高级玩法

github 地址:https://github.com/imageprocessor/cv4j

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

Java开发画板

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

3625
来自专栏自由而无用的灵魂的碎碎念

小项目分享---混色器

编写代码的同志们一般懂美术的就少了,偶也是,什么色轮、三维加色等等。虽然看过一些书籍(如内田广由纪的《配色基础原理》),不过还是一知半解的。

913
来自专栏冰霜之地

ReactiveCocoa 中 奇妙无比的 “宏” 魔法

在ReactiveCocoa 中,开源库作者为我们提供了很多种魔法,“黑”魔法,“红”魔法……今天就让先来看看“红”魔法。

772
来自专栏ml

扫雷游戏制作学习过程

1. 扫雷游戏的构思:   设计为初级,中级,高级三个级别。      因此不妨设置为如下规格: 9x9 16x15和30x16 (行,列)规格不同地雷的数量也...

3868

扫码关注云+社区