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

}

案例运行结果如下



时间: 2024-10-27 05:21:24

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

JAVA学习Swing章节流布局管理器简单学习

package com.swing; import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.WindowConstants; /** * 1:流(FlowLayout)布局管理器是布局管理器中最基本的布局管理器,流布局管理器在整个容器中 * 的布局正如其名,像流一样从左到右摆放组件,直到占据了这

JAVA学习Swing章节JPanel和JScrollPane面板的简单学习

package com.swing; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; /** * 1:常用面板 * 面板也是一个Swing容器,他可以看作为容器容纳其他组件,但它也必须被添加到其他容器中

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

package com.swing; import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;impor

qq-关于java自定义swing组件的问题

问题描述 关于java自定义swing组件的问题 最近想用纯java写一个小程序,就是点击按钮将输入框的文字输出在上方的消息输出框,消息显示的样式就是类似于QQ聊天时的样子,把消息显示类似在QQ气泡上面 解决方案 JAVA Swing自定义JScorllPanel如何给Swing里组件自定义边框用Java Swing实现的自定义日历组件

java-关于Java的Swing程序问题

问题描述 关于Java的Swing程序问题 运行这个Java程序的时候容器网格设置为3行3列,为什么运行的时候只有两列,而且第四个面板大小与其他三个不同? 解决方案 第一个问题,你的结果之所以不是3行3列, GridLayout(3,3)布局时,设定的列数只有在行数为0时才起作用:当行数不为0时,列数是由行数和添加的布局组件总数决定的.比如,你的程序里面,行数为3,布局组件总数为4,那么列数将被确定为2,所以,你会看到运行之后的布局. 第二个问题,你的p4有两行,所以就是这样的效果了. 修正代码

Java学习路线图,专为新手定制的学习计划建议

怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA). J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展J2EE和J2ME. J2ME,The Micro Edition of the Java 2 Platform.主要用于嵌入式J

java点击一个按钮怎么改变另一个窗口标签内容

问题描述 java点击一个按钮怎么改变另一个窗口标签内容 这是类A的按钮JButton pingguo = new JButton(""苹果""); pingguo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new FrameP(); } }); pingguo.setForeground(new Color(255 99 71)); p

java中循环添加按钮后 要添加监听这么区分按钮

问题描述 java中循环添加按钮后 要添加监听这么区分按钮 while(rs.next()){ String friendId=rs.getString(""friendid""); jb=new JButton(); jb.setText(friendId); jb.setBounds(10i10030); i=i+50; jsp.add(jb); } 这句话循环读数据库去除ID然后添加按钮,但是这么区分 我试验了下 监听只能最后一个按钮能行 其他不行 解决方案

java基于swing实现的连连看代码_java

本文实例讲述了java基于swing实现连连看代码.分享给大家供大家参考. 主要功能代码如下: 复制代码 代码如下: package llkan; import javax.swing.*; import java.awt.*; import java.awt.event.*; /**  * 连连看游戏  * @author Administrator  *2014年10月17日  */ public class MainGame implements ActionListener {