Java里Swing的按钮练习代码(5)

普通按钮(JButton

  • 代码部分
package top.linksinke.test;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;

/**
 * JButton 按钮的使用<br/>
 * create by LINKSINKE on 2020/2/28
 */
public class JButtonTest extends JFrame {
	public JButtonTest() {
		this.setBounds(20, 20, 600, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container ctainer = this.getContentPane();
		ctainer.setLayout(new GridLayout(2, 4, 8, 20));
		JButton jbtn[] = new JButton[8];
		for (int i = 0; i < jbtn.length; i++) {
			jbtn[i] = new JButton();
			ctainer.add(jbtn[i]);
		}

		jbtn[0].setText("禁用中...");
		jbtn[0].setEnabled(false);// 为禁用状态

		jbtn[1].setText("绿色背景");
		jbtn[1].setBackground(Color.GREEN); // 绿色背景色

		jbtn[2].setText("带边框");
		// 边框线宽度为10,颜色为黄颜色
		jbtn[2].setBorder(BorderFactory.createLineBorder(Color.YELLOW, 10));

		jbtn[3].setText("无边框");
		jbtn[3].setBorderPainted(false); // 没有边框

		jbtn[4].setText("有图片");
		jbtn[4].setIcon(new ImageIcon("src/btn.png")); // 设置图片
		jbtn[4].setToolTipText("乎,有个提示哎");// 放到图片上才有提示文字

		/**
		 * 弹窗
		 */
		jbtn[5].setText("选择内容");
		jbtn[5].addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int content = JOptionPane.showConfirmDialog(JButtonTest.this, "猜猜看,有什么惊喜呢???");
				if (content > 0) {
					JOptionPane.showMessageDialog(JButtonTest.this, "请重新选择是");
				} else {
					JOptionPane.showMessageDialog(JButtonTest.this, "中奖了,恭喜你");
				}
			}
		});

		jbtn[6].setText("好好学习,天天向上");
		// 设置字体
		jbtn[6].setFont(new Font("仿宋", Font.BOLD, 10));

		// 设置窗口为显示状态
		this.setVisible(true);
	}

	public static void main(String args[]) {
		JFrame jframe = new JButtonTest();
	}
}
  • 代码效果图
    在这里插入图片描述

单选按钮(JRadioButton

  • 代码部分
package top.linksinke.test;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

/**
 * JRadioButton 单选按钮的使用<br/>
 * create by LINKSINKE on 2020/2/29
 */
public class JRadioButtonTest extends JFrame {

	public JRadioButtonTest() {
		// 设置close按钮的操作(退出窗口并停止程序运行)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗口默认打开的位置和大小
		this.setBounds(30, 30, 300, 300);

		// 获取容器对象
		Container ctainer = this.getContentPane();
		// 设置布局方式为网格布局,2行1列,横向间距10,纵向间距10
		ctainer.setLayout(new GridLayout(2, 1, 10, 10));

		// 设置默认按钮0是勾选中的
		/**
		 * 通过setSelected(boolean 值,可选true|false)方法来设置默认值
		 */
		JPanel p1 = new JPanel();
		p1.setLayout(new FlowLayout());
		p1.setBorder(BorderFactory.createTitledBorder("默认勾选旋钮0效果"));
		JRadioButton rdoOne[] = new JRadioButton[8];
		for (int i = 0; i < rdoOne.length; i++) {
			rdoOne[i] = new JRadioButton("旋钮" + i);
			p1.add(rdoOne[i]);
		}
		rdoOne[0].setSelected(true); // 设置默认选择旋钮0

		// 设置按钮存在排斥效果,即不能同时选中,只能够选中一个
		/**
		 * 通过ButtonGroup来实现只能够选中一个
		 */
		JPanel p2 = new JPanel();
		p2.setBorder(BorderFactory.createTitledBorder("排斥效果"));
		final JRadioButton rdoTwo[] = new JRadioButton[8];
		final ButtonGroup group = new ButtonGroup();
		for (int i = 0; i < rdoTwo.length; i++) {
			rdoTwo[i] = new JRadioButton("旋钮" + i);
			group.add(rdoTwo[i]);
			p2.add(rdoTwo[i]);
		}
		/**
		 * 将面板名称为“排斥效果”的按钮状态以弹窗的形式告知
		 */
		JButton btn = new JButton("输出");
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(JRadioButtonTest.this,
						"按钮0状态==" + rdoTwo[0].isSelected() + "按钮1状态=" + rdoTwo[1].isSelected() + "\n按钮2状态="
								+ rdoTwo[2].isSelected() + "按钮3状态=" + rdoTwo[3].isSelected() + "\n按钮4状态="
								+ rdoTwo[4].isSelected() + "按钮5状态=" + rdoTwo[5].isSelected() + "\n按钮6状态="
								+ rdoTwo[6].isSelected() + "按钮7状态=" + rdoTwo[7].isSelected());
				group.clearSelection();
				JOptionPane.showMessageDialog(JRadioButtonTest.this,
						"按钮0状态==" + rdoTwo[0].isSelected() + "按钮1状态=" + rdoTwo[1].isSelected() + "\n按钮2状态="
								+ rdoTwo[2].isSelected() + "按钮3状态=" + rdoTwo[3].isSelected() + "\n按钮4状态="
								+ rdoTwo[4].isSelected() + "按钮5状态=" + rdoTwo[5].isSelected() + "\n按钮6状态="
								+ rdoTwo[6].isSelected() + "按钮7状态=" + rdoTwo[7].isSelected());
			}
		});
		p2.add(btn);

		// 向容器中添加面板对象p1,p2
		ctainer.add(p1);
		ctainer.add(p2);

		// 设置窗口为显示状态
		this.setVisible(true);

	}

	public static void main(String args[]) {
		JFrame jframe = new JRadioButtonTest();
	}

}
  • 代码效果图
    在这里插入图片描述

复选框按钮(JCheckBox

  • 代码部分
package top.linksinke.test;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 * JCheckBox 复选框练习<br/>
 * create by LINKSINKE on 2020/2/29
 */
public class JCheckBoxTest extends JFrame {
	public JCheckBoxTest() {
		// 设置close按钮的操作(关闭窗口并停止程序)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗口默认打开的位置和大小
		this.setBounds(20, 20, 300, 200);

		// 获取容器对象
		Container ctainer = this.getContentPane();
		// 设置布局方式为流式布局
		ctainer.setLayout(new FlowLayout());

		// 创建c1对象
		final JCheckBox c1 = new JCheckBox("乒乓球");
		c1.setSelected(true);// 设置乒乓球为默认选中
		ctainer.add(c1);

		// 添加匿名对象到容器中
		ctainer.add(new JCheckBox("足球"));
		ctainer.add(new JCheckBox("篮球"));
		ctainer.add(new JCheckBox("排球"));
		ctainer.add(new JCheckBox("高尔夫球"));
		ctainer.add(new JCheckBox("冰球"));
		ctainer.add(new JCheckBox("网球"));
		ctainer.add(new JCheckBox("橄榄球"));
		ctainer.add(new JCheckBox("羽毛球"));
		ctainer.add(new JCheckBox("保龄球"));

		/**
		 * 获取c1的选中状态<br/>
		 * true:选中状态,false:未选中状态
		 */
		JButton btn = new JButton("获取c1状态");
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(JCheckBoxTest.this, "c1的状态为:" + c1.isSelected());
			}
		});

		// 添加btn到容器中
		ctainer.add(btn);

		// 设置窗口为显示状态
		this.setVisible(true);
	}

	public static void main(String args[]) {
		JFrame jframe = new JCheckBoxTest();
	}
}
  • 代码效果图
    在这里插入图片描述

切换按钮(JToggleButton

  • 代码部分
package top.linksinke.test;

import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JToggleButton;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * JToggleButton 切换按钮的使用<br/>
 * create by LINKSINKE on 2020/3/2
 */
public class JToggleButtonTest extends JFrame {
	public JToggleButtonTest() {
		// 设置close按钮的操作(关闭窗口并停止程序的运行)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 设置窗口默认打开的位置和大小
		this.setBounds(20, 20, 200, 200);
		// 获取容器对象
		Container ctainer = this.getContentPane();
		ctainer.setLayout(null);// 设置布局方式为绝对布局

		// 带图片的标签
		final JLabel lb = new JLabel(new ImageIcon("src/java.jpg"));
		lb.setBounds(40, 10, 100, 100);// 设置位置和大小
		lb.setVisible(false);// 默认为不显示该标签

		// 切换按钮
		final JToggleButton tgbtn = new JToggleButton("查看图片");
		tgbtn.setBounds(40, 120, 90, 20);// 设置位置和大小
		/**
		 * 添加按钮状态改变的监听事件
		 */
		tgbtn.addChangeListener(new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				JToggleButton j = (JToggleButton) e.getSource();
				if (j.isSelected()) {
					tgbtn.setText("隐藏图片");
					lb.setVisible(true);
				} else {
					tgbtn.setText("查看图片");
					lb.setVisible(false);
				}
			}
		});

		// 往容器里放入切换按钮、带图片的标签
		ctainer.add(tgbtn);
		ctainer.add(lb);
		// 设置窗口为显示状态(true为显示,false为不显示)
		this.setVisible(true);

	}

	public static void main(String args[]) {
		JFrame jframe = new JToggleButtonTest();
	}
}
  • 代码效果图
    在这里插入图片描述
发布了68 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_29001539/article/details/104568955
今日推荐