Java详解Swing中的几种常用按钮的使用
作者:LNORA 发布时间:2023-12-04 21:44:30
Swing中的常用按钮
在Swing中,常见的按钮组件有JButton,JCheckBox,JRadioButton等,它们都是抽象类AbstractButton类的直接或间接子类。在AbstractButton类中提供了按钮组件通用的一些方法。
AbstractButton的常用方法
方法描述 | 功能 |
---|---|
lcon getlcon()和void setlcon(lcon icon) | 设置或者获取按钮的图标 |
String getText()和void setText(String text) | 设置或者获取按钮的文本 |
void setEnable(boolean b) | 启用或者禁用按钮 |
setSelected(boolean b) | 设置按钮的状态为是否选中 |
boolean isSelected() | 返回按钮的状态 |
JRadionButton(单选按钮)
单选按钮只能选中一个,当按下一个按钮的时候,先前按下的按钮就会弹起,对于单选按钮来说,当一个按钮被选中时,先前选中的按钮就会自动取消选中。
但是单选按钮本身不具备这种功能,要想实现单选按钮之间的互斥,需要用java.swing.ButtonGroup类,它是一个不可见的组件,不需要添加在容器中显示,只在逻辑上表示一个单选按钮,将多个单选按钮添加到同一个单选按钮组对象中,就能实现按钮的单选功能。
单选按钮的构造方法
方法描述 | 功能说明 |
---|---|
JRadioButton() | 创建一个没有文本信息,始终状态未被选中的单选框 |
JRadioButton(String ,text) | 创建一个带有文本信息,初始状态未被选定的单选框 |
JRadioButton(String text,boolean selected) | 创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框 |
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DanXuan extends JFrame {
//单选按钮对象
private ButtonGroup group;
//将按钮放在JPanel面板上
private JPanel panel;
//将JPanel作为调色板
private JPanel pallet;
public DanXuan(){
pallet =new JPanel();
this.add(pallet,BorderLayout.CENTER);
panel=new JPanel();
group=new ButtonGroup();
addJRadioButton("灰");
addJRadioButton("粉");
addJRadioButton("黄");
this.add(panel,BorderLayout.SOUTH);
this.setSize(300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//创建一个带有文本信息的单选按钮,将按钮添加到panel面板和ButtonGroup按钮组中,并添加一个 *
private void addJRadioButton(final String text){
JRadioButton radioButton=new JRadioButton(text);
group.add(radioButton);
panel.add(radioButton);
radioButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Color color=null;
if("灰".equals(text)){
color=Color.GRAY;
}else if("粉".equals(text)){
color=Color.PINK;
}else if("黄".equals(text)){
color=Color.YELLOW;
}else {
color=Color.WHITE;
}
pallet.setBackground(color);
}
});
}
public static void main(String[] args) {
new DanXUan();
}
}
在一个面板上放置三个按钮,当单击这三个不同的按钮时,pallet面板的背景就会相应的变成灰色,粉色,黄色。先为按钮设置一个事件 * ,用来响应用户单击单选按钮的操作,在actionPerformed()方法中定义一个Color类型的变量color,并根据方法传入的text值进行判断,根据color的值设置pallet的背景颜
复选框(JCheckBox)
有选中和未选中两种状态,如果用户想要接收的输入只有是和非,则可以通过复选框来切换状态,如果复选框有多个,则用户可以选择其中一个或则多个。
复选框的构造方法
方法描述 | 功能叙述 |
---|---|
JCheckBox() | 创建一个没有文本信息,初始状态未被选中的复选框 |
JCheckBox(String text) | 创建一个带有文本信息,初始状态未被选中的复选框 |
JCheckBox(String text,boolean selected) | 创建一个带有文本信息,并指定初始状态的复选框 |
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DuoXuan extends JFrame {
private JCheckBox italic;
private JCheckBox bold;
private JLabel label;
public DuoXuan (){
label=new JLabel("我的世界",JLabel.CENTER);
label.setFont(new Font("宋体",Font.PLAIN,20));
Component lable ;
Label p1 = new Label();
this.add(p1);
JPanel panel=new JPanel();
italic=new JCheckBox("ITALIC");
bold=new JCheckBox("BOLD");
ActionListener listener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int mode = 0;
if(bold.isSelected())
mode+=Font.BOLD;
if(italic.isSelected())
mode+=Font.ITALIC;
label.setFont(new Font("宋体",mode,20));
}
};
italic.addActionListener(listener);
bold.addActionListener(listener);
panel.add(italic);
panel.add(bold);
this.add(panel,BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,300);
this.setVisible(true);
}
public static void main(String[] args) {
new DuoXuan ();
}
}
组合框(JComboBox)
JComboBox组件被称为组合框或者下拉列表框,它将所有选择折叠收藏在一起,默认显示的是第一个添加的选项,当用户单击组合框时,会出现下拉式的选择列表,用户可以从中选择其中一项并显示。分为可编辑和不可编辑两种形式,对于不可编辑的组合框,用户只能在现有的选项列表中进行选择,对于可编辑的组合框,用户既可以在现有的选项中进行选择,还可以自己输入新的内容,自己输入的内容只能作为当前项显示,并不会添加到组合框的选项列表中。
组合框的构造方法
方法描述 | 功能叙述 |
---|---|
JComBox() | 创建一个没有可选项的组合框 |
JComboBox(Object[]items) | 创建一个组合框,将Object数组中的元素作为组合框的下拉列表选项 |
JComboBox(Vector items) | 创建一个组合框,将Vector集合中的元素作为组合框的下拉列表选项 |
下拉列表框的常用方法
void addItem(Object anObject) //将指定的对象作为选项添加到下拉列表框中
void insertItemAt(Object anObject,int index) //在下拉列表框中的指定索引处插入项
void removeltem(0bject anObject) //在下拉列表框中删除指定的对象项
void removeItemAt(int anlndex) //在下拉列表框中删除指定位置的对象项
void removeAllItems() //从下拉列表框中删除所有项
int getItemCount() //返回下拉列表框中的项数
Object getItemAt(int index) //获取指定索引的列表项,索引从 0 开始
int getSelectedIndex() //获取当前选择的索引
Object getSelectedltem() //获取当前选择的项
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class XiaLa extends JFrame {
//创建一个组合框
private JComboBox comboBox;
//创建一个文本框
private JTextField field;
public XiaLa(){
//创建一个面板
JPanel panel=new JPanel();
comboBox=new JComboBox();
//为组合框添加选项
comboBox.addItem("请选择城市");
comboBox.addItem("驻马店");
comboBox.addItem("郑州");
comboBox.addItem("开封");
comboBox.addItem("漯河");
comboBox.addItem("南阳");
comboBox.addItem("洛阳");
comboBox.addItem("济源");
comboBox.addItem("商丘");
comboBox.addItem("新乡");
comboBox.addItem("周口");
comboBox.addItem("信阳");
comboBox.addItem("三门峡");
comboBox.addItem("濮阳");
comboBox.addItem("许昌");
comboBox.addItem("安阳");
comboBox.addItem("鹤壁");
comboBox.addItem("焦作");
comboBox.addItem("平顶山");
//为组合框设置事件 *
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String item =(String) comboBox.getSelectedItem();
if("请选择城市".equals(item)){
field.setText("");
}else{
field.setText("你选择的城市是:"+item);
}
}
});
field=new JTextField(20);
panel.add(comboBox);
panel.add(field);
//在内容面板中添加JPanel面板
this.add(panel, BorderLayout.NORTH);
this.setSize(350,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new XiaLa();
}
}
首先为组合框添加一个事件 * ,然后再actionPerformed()方法中,通过调用comboBox的getSelectedItem()方法获得用户所选的item,如果为城市名调用filed的setText(item)方法将城市名显示在文本框中;如果item为"请选择城市"则将文本框的内容清空。
小结
来源:https://blog.csdn.net/m0_55749088/article/details/124284190


猜你喜欢
- 序言springboot框架价值,可以简单快速的构建独立的spring生产级别应用。springboot主要有以下的特性:1.创建独立的Sp
- 学习编程语言最重要的就是实践。很多小伙伴在学习完编程语言后,一直停留在基础阶段,只懂一大堆理论知识,而不懂得实践。那么,今天我们一起来动手做
- 前言需求使用freemarker生成的静态文件,统一存储在某个服务器上。本来一开始打算使用ftp实现的,奈何老连接不上,改用jsch。毕竟有
- package com.smart.frame.task.autoTask;import java.util.Collection;impo
- 背景#目前我主要负责的一个项目是一个 C/S 架构的客户端开发,前端主要是通过 WPF 相关技术来实现,后端是通过 Python 来实现,前
- 光流的概念是由一个叫Gibson的哥们在1950年提出来的。它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时
- Q:使用过滤器、 * 与切片实现每个请求耗时的统计,并比较三者的区别与联系过滤器Filter 过滤器概念Filter是J2E中来的,可以看做
- 1.什么是逆向工程mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的
- 本文实例讲述了java方法重写,分享给大家供大家参考。具体分析如下:一、方法的重写概述:1、在子类中可以根据需要对从基类中继承来的方法进行重
- 第一步:输入15个整数第二步:对这15个数进行排序第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置实现代码如下:方法一:选
- 1.获取签名与模板进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格)2.编写模板与签名的枚举
- 1, 新建一个项目, 类型为 安装和部署 中的安装项目或安装向导 2,双击应用程序文件夹,添加所有需要的文件(包括图标,Access,图片和
- 1. JAVA 内存模型 (JMM)JMM是用来干嘛的?:《Java虚拟机规范》中曾试图定义一种“Java内存模型&am
- ArrayBlockingQueue介绍ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayB
- 概述spirng-aop模块是Spring框架中的核心模块,虽然Spring Ioc container并不依赖AOP,但AOP给Ioc的实
- 本文实例讲述了java使用dom4j生成与解析xml文档的方法。分享给大家供大家参考,具体如下:xml是一种新的数据格式,主要用于数据交换。
- 编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯。1、 项目名全部小写2、 包名全部小写3、 类名首字母大写,
- 一、配置xml路径mybatis-plus:mapper-locations: classpath:mapper/*.xml二、编写Mapp
- Maven热部署,顾名思义就是可以不影响项目在服务器中的运行情况,可以实现项目代码的更新,减少启动,编译时间,达到快速开发的目的,也不需要手
- 系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。 1. 修改M