6.2 图片按钮&&单选框&&多选框
6.2.1 图片按钮
哈哈 ~ 你们说什么叫 图片按钮呀?不就是 JFrame 组件的新特性吗,可以携带 图标!那按钮组件,携带了图标不就是 图片按钮 吗?简单不?
package com.muquanyu.lesson05;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class JbuttonDemoA extends JFrame {
public JbuttonDemoA(){
Container contentPane = getContentPane();//获取当前类 目录下的 资源文件路径URL url = JbuttonDemoA.class.getResource("头像.jpg");//将一个图片变成 图标ImageIcon imageIcon = new ImageIcon(url);Image img = imageIcon.getImage().getScaledInstance(100, 100, 1);imageIcon.setImage(img);//把这个图标放在按钮上JButton bth1 = new JButton("图片按钮", imageIcon);bth1.setSize(100,100);bth1.setToolTipText("我是图片按钮");setLayout(new FlowLayout());JLabel label = new JLabel("jhh");contentPane.add(label);contentPane.add(bth1);setSize(500,500);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {
JbuttonDemoA jbuttonDemoA = new JbuttonDemoA();}
}
jButton.setToolTipText(); //设置提示文本,这个是我认为比较好的地方。很多语言的按钮,都没有这个 功能。
6.2.2 单选框(按钮)
无论是单选框还是多选框,其本质都是 按钮组件!
所以,单选框叫:JRadioButton(“我是单选框”);
单选框往往要配合 ButtonGroup 按钮分组组件,来进行分组。
JRadioButton radioButton = new JRadioButton("我是单选框");
6.2.3 ButtonGroup 按钮分组
ButtonGroup 按钮分组,不属于 JFrame!也不是什么组件。是一种规则! 它是 Serializable 可有序化的实现。
public class ButtonGroup implements Serializable
它能够实现什么功能呢?
答:能够让 我们的 按钮只能选中 一个!只要是被 可有序化 add 过的按钮,那么就只能让其选中一个!
- 没有 ButtonGroup 的 单选框!
package com.muquanyu.lesson05;import javax.swing.*;
import java.awt.*;public class JRadioButtonDemo extends JFrame {
public JRadioButtonDemo(){
Container contentPane = getContentPane();setBounds(500,500,500,500);JRadioButton radio1 = new JRadioButton("单选框A");JRadioButton radio2 = new JRadioButton("单选框B");JRadioButton radio3 = new JRadioButton("单选框C");contentPane.add(radio1,BorderLayout.NORTH);contentPane.add(radio2,BorderLayout.CENTER);contentPane.add(radio3,BorderLayout.SOUTH);setVisible(true);}public static void main(String[] args) {
JRadioButtonDemo jRadioButtonDemo = new JRadioButtonDemo();}
}
你会发现 都可以 选,但是 选择的样式 只有一种!所以还保持着 单选框的重要特性!不过我们意识中的单选框 有的时候,好像只能 选一个来着!这应该 怎么做呢?
package com.muquanyu.lesson05;import javax.swing.*;
import java.awt.*;public class JRadioButtonDemo extends JFrame {
public JRadioButtonDemo(){
Container contentPane = getContentPane();setBounds(500,500,500,500);JRadioButton radio1 = new JRadioButton("单选框A");JRadioButton radio2 = new JRadioButton("单选框B");JRadioButton radio3 = new JRadioButton("单选框C");//创建 ButtonGroup 按钮分组 规则 对象!ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radio1);buttonGroup.add(radio2);buttonGroup.add(radio3);
//把这些 单选框 都添加到 这个 规则里面!就自然而然的成为 只能选择 其中一个了!contentPane.add(radio1,BorderLayout.NORTH);contentPane.add(radio2,BorderLayout.CENTER);contentPane.add(radio3,BorderLayout.SOUTH);setVisible(true);}public static void main(String[] args) {
JRadioButtonDemo jRadioButtonDemo = new JRadioButtonDemo();}
}
这样,我们就只能 选择 其中的 一个了!是不是很神奇呢?其实 根本不神奇,就是我们给 这些 单选框 加了 一个 叫做 ButtonGroup 的规则而已。
6.2.4 JCheckBox 多选框
很简单,就是 创建 JCheckBox 的对象就完事了。
package com.muquanyu.lesson05;import javax.swing.*;
import java.awt.*;public class JCheckBoxDemo extends JFrame{
public JCheckBoxDemo(){
Container contentPane = getContentPane();setBounds(500,500,500,500);JCheckBox checkbox1 = new JCheckBox("我是单选框");JCheckBox checkbox2 = new JCheckBox("我是单选框");JCheckBox checkbox3 = new JCheckBox("我是单选框");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(checkbox1);buttonGroup.add(checkbox2);buttonGroup.add(checkbox3);contentPane.add(checkbox1,BorderLayout.NORTH);contentPane.add(checkbox2,BorderLayout.CENTER);contentPane.add(checkbox3,BorderLayout.SOUTH);setVisible(true);}public static void main(String[] args) {
JCheckBoxDemo jCheckBoxDemo = new JCheckBoxDemo();}
}
你会发现 这代码 几乎 和 RadioButton 那个 没咋变化。而且 ButtonGroup 也可以适用于 它。