Java詳解Swing中的幾種常用按鈕的使用
Swing中的常用按鈕
在Swing中,常見(jiàn)的按鈕組件有JButton,JCheckBox,JRadioButton等,它們都是抽象類AbstractButton類的直接或間接子類。在AbstractButton類中提供了按鈕組件通用的一些方法。
AbstractButton的常用方法
| 方法描述 | 功能 |
|---|---|
| lcon getlcon()和void setlcon(lcon icon) | 設(shè)置或者獲取按鈕的圖標(biāo) |
| String getText()和void setText(String text) | 設(shè)置或者獲取按鈕的文本 |
| void setEnable(boolean b) | 啟用或者禁用按鈕 |
| setSelected(boolean b) | 設(shè)置按鈕的狀態(tài)為是否選中 |
| boolean isSelected() | 返回按鈕的狀態(tài) |
JRadionButton(單選按鈕)
單選按鈕只能選中一個(gè),當(dāng)按下一個(gè)按鈕的時(shí)候,先前按下的按鈕就會(huì)彈起,對(duì)于單選按鈕來(lái)說(shuō),當(dāng)一個(gè)按鈕被選中時(shí),先前選中的按鈕就會(huì)自動(dòng)取消選中。
但是單選按鈕本身不具備這種功能,要想實(shí)現(xiàn)單選按鈕之間的互斥,需要用java.swing.ButtonGroup類,它是一個(gè)不可見(jiàn)的組件,不需要添加在容器中顯示,只在邏輯上表示一個(gè)單選按鈕,將多個(gè)單選按鈕添加到同一個(gè)單選按鈕組對(duì)象中,就能實(shí)現(xiàn)按鈕的單選功能。
單選按鈕的構(gòu)造方法
| 方法描述 | 功能說(shuō)明 |
|---|---|
| JRadioButton() | 創(chuàng)建一個(gè)沒(méi)有文本信息,始終狀態(tài)未被選中的單選框 |
| JRadioButton(String ,text) | 創(chuàng)建一個(gè)帶有文本信息,初始狀態(tài)未被選定的單選框 |
| JRadioButton(String text,boolean selected) | 創(chuàng)建一個(gè)具有文本信息,并指定初始狀態(tài)(選中/未選中)的單選框 |
package Swing;
?
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
?
public class DanXuan extends JFrame {
//單選按鈕對(duì)象
private ButtonGroup group;
//將按鈕放在JPanel面板上
private JPanel panel;
//將JPanel作為調(diào)色板
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);
}
//創(chuàng)建一個(gè)帶有文本信息的單選按鈕,將按鈕添加到panel面板和ButtonGroup按鈕組中,并添加一個(gè)監(jiān)聽(tīng)器
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();
}
}
在一個(gè)面板上放置三個(gè)按鈕,當(dāng)單擊這三個(gè)不同的按鈕時(shí),pallet面板的背景就會(huì)相應(yīng)的變成灰色,粉色,黃色。先為按鈕設(shè)置一個(gè)事件監(jiān)聽(tīng)器,用來(lái)響應(yīng)用戶單擊單選按鈕的操作,在actionPerformed()方法中定義一個(gè)Color類型的變量color,并根據(jù)方法傳入的text值進(jìn)行判斷,根據(jù)color的值設(shè)置pallet的背景顏
復(fù)選框(JCheckBox)
有選中和未選中兩種狀態(tài),如果用戶想要接收的輸入只有是和非,則可以通過(guò)復(fù)選框來(lái)切換狀態(tài),如果復(fù)選框有多個(gè),則用戶可以選擇其中一個(gè)或則多個(gè)。
復(fù)選框的構(gòu)造方法
| 方法描述 | 功能敘述 |
|---|---|
| JCheckBox() | 創(chuàng)建一個(gè)沒(méi)有文本信息,初始狀態(tài)未被選中的復(fù)選框 |
| JCheckBox(String text) | 創(chuàng)建一個(gè)帶有文本信息,初始狀態(tài)未被選中的復(fù)選框 |
| JCheckBox(String text,boolean selected) | 創(chuàng)建一個(gè)帶有文本信息,并指定初始狀態(tài)的復(fù)選框 |
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組件被稱為組合框或者下拉列表框,它將所有選擇折疊收藏在一起,默認(rèn)顯示的是第一個(gè)添加的選項(xiàng),當(dāng)用戶單擊組合框時(shí),會(huì)出現(xiàn)下拉式的選擇列表,用戶可以從中選擇其中一項(xiàng)并顯示。分為可編輯和不可編輯兩種形式,對(duì)于不可編輯的組合框,用戶只能在現(xiàn)有的選項(xiàng)列表中進(jìn)行選擇,對(duì)于可編輯的組合框,用戶既可以在現(xiàn)有的選項(xiàng)中進(jìn)行選擇,還可以自己輸入新的內(nèi)容,自己輸入的內(nèi)容只能作為當(dāng)前項(xiàng)顯示,并不會(huì)添加到組合框的選項(xiàng)列表中。
組合框的構(gòu)造方法
| 方法描述 | 功能敘述 |
|---|---|
| JComBox() | 創(chuàng)建一個(gè)沒(méi)有可選項(xiàng)的組合框 |
| JComboBox(Object[]items) | 創(chuàng)建一個(gè)組合框,將Object數(shù)組中的元素作為組合框的下拉列表選項(xiàng) |
| JComboBox(Vector items) | 創(chuàng)建一個(gè)組合框,將Vector集合中的元素作為組合框的下拉列表選項(xiàng) |
下拉列表框的常用方法
void addItem(Object anObject) //將指定的對(duì)象作為選項(xiàng)添加到下拉列表框中
void insertItemAt(Object anObject,int index) //在下拉列表框中的指定索引處插入項(xiàng)
void removeltem(0bject anObject) //在下拉列表框中刪除指定的對(duì)象項(xiàng)
void removeItemAt(int anlndex) //在下拉列表框中刪除指定位置的對(duì)象項(xiàng)
void removeAllItems() //從下拉列表框中刪除所有項(xiàng)
int getItemCount() //返回下拉列表框中的項(xiàng)數(shù)
Object getItemAt(int index) //獲取指定索引的列表項(xiàng),索引從 0 開(kāi)始
int getSelectedIndex() //獲取當(dāng)前選擇的索引
Object getSelectedltem() //獲取當(dāng)前選擇的項(xiàng)
package Swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class XiaLa extends JFrame {
//創(chuàng)建一個(gè)組合框
private JComboBox comboBox;
//創(chuàng)建一個(gè)文本框
private JTextField field;
public XiaLa(){
//創(chuàng)建一個(gè)面板
JPanel panel=new JPanel();
comboBox=new JComboBox();
//為組合框添加選項(xiàng)
comboBox.addItem("請(qǐng)選擇城市");
comboBox.addItem("駐馬店");
comboBox.addItem("鄭州");
comboBox.addItem("開(kāi)封");
comboBox.addItem("漯河");
comboBox.addItem("南陽(yáng)");
comboBox.addItem("洛陽(yáng)");
comboBox.addItem("濟(jì)源");
comboBox.addItem("商丘");
comboBox.addItem("新鄉(xiāng)");
comboBox.addItem("周口");
comboBox.addItem("信陽(yáng)");
comboBox.addItem("三門峽");
comboBox.addItem("濮陽(yáng)");
comboBox.addItem("許昌");
comboBox.addItem("安陽(yáng)");
comboBox.addItem("鶴壁");
comboBox.addItem("焦作");
comboBox.addItem("平頂山");
//為組合框設(shè)置事件監(jiān)聽(tīng)器
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String item =(String) comboBox.getSelectedItem();
if("請(qǐng)選擇城市".equals(item)){
field.setText("");
?
}else{
field.setText("你選擇的城市是:"+item);
}
}
});
field=new JTextField(20);
panel.add(comboBox);
panel.add(field);
//在內(nèi)容面板中添加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();
}
}首先為組合框添加一個(gè)事件監(jiān)聽(tīng)器,然后再actionPerformed()方法中,通過(guò)調(diào)用comboBox的getSelectedItem()方法獲得用戶所選的item,如果為城市名調(diào)用filed的setText(item)方法將城市名顯示在文本框中;如果item為"請(qǐng)選擇城市"則將文本框的內(nèi)容清空。

小結(jié)
以上就是我對(duì)于Swing中幾種常見(jiàn)按鈕的理解,以便于我們之后在不同開(kāi)發(fā)中根據(jù)不同的情況設(shè)置不同的按鈕,提高用戶的體驗(yàn)感。
到此這篇關(guān)于Java詳解Swing中的幾種常用按鈕的使用的文章就介紹到這了,更多相關(guān)Java Swing按鈕內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
總結(jié)Java常用到的六個(gè)加密技術(shù)和代碼
大家要記住現(xiàn)代密碼學(xué)最重要的原則柯克霍夫原則:數(shù)據(jù)的安全基于密鑰而不是算法的保密。也就是說(shuō)即使密碼系統(tǒng)的任何細(xì)節(jié)已為人悉知,只要密匙未洩漏,它也應(yīng)是安全的。這篇文章給大家介紹了6個(gè)常用的加密技術(shù)和代碼。2016-07-07
Java實(shí)體類不要使用基本類型的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于Java包裝類之實(shí)體類不要使用基本類型的知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-02-02
Spring Boot整合RabbitMQ實(shí)例(Topic模式)
Topic Exchange 轉(zhuǎn)發(fā)消息主要是根據(jù)通配符。接下來(lái)通過(guò)本文給大家分享Spring Boot整合RabbitMQ實(shí)例(Topic模式),需要的朋友參考下吧2017-04-04
Java過(guò)濾器filter_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java過(guò)濾器filter,通過(guò)過(guò)濾器,可以對(duì)來(lái)自客戶端的請(qǐng)求進(jìn)行攔截,進(jìn)行預(yù)處理或者對(duì)最終響應(yīng)給客戶端的數(shù)據(jù)進(jìn)行處理后再輸出2017-07-07
SpringBoot內(nèi)置tomcat調(diào)優(yōu)測(cè)試優(yōu)化
這篇文章主要介紹了SpringBoot內(nèi)置tomcat調(diào)優(yōu)測(cè)試優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Spring?Cloud?OAuth2實(shí)現(xiàn)自定義token返回格式
Spring?Security?OAuth的token返回格式都是默認(rèn)的,但是往往這個(gè)格式是不適配系統(tǒng)。本文將用一個(gè)接口優(yōu)雅的實(shí)現(xiàn)?Spring?Cloud?OAuth2?自定義token返回格式,需要的可以參考一下2022-06-06
SpringBoot中webSocket實(shí)現(xiàn)即時(shí)聊天
這篇文章主要介紹了SpringBoot中webSocket實(shí)現(xiàn)即時(shí)聊天,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Spring Boot console log 格式自定義方式
這篇文章主要介紹了Spring Boot console log 格式自定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

