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

小結(jié)
以上就是我對于Swing中幾種常見按鈕的理解,以便于我們之后在不同開發(fā)中根據(jù)不同的情況設(shè)置不同的按鈕,提高用戶的體驗感。
到此這篇關(guān)于Java詳解Swing中的幾種常用按鈕的使用的文章就介紹到這了,更多相關(guān)Java Swing按鈕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程
使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時間了,項目在技術(shù)上已經(jīng)沒有什么難點了,基于現(xiàn)有的技術(shù)就可以實現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于整合SSM框架:Spring MVC + Spring + MyBatis的相關(guān)資料,需要的朋友可以參考下。2017-07-07
mybatis中注解與xml配置的對應(yīng)關(guān)系和對比分析
這篇文章主要介紹了mybatis中注解與xml配置的對應(yīng)關(guān)系和對比分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
解決SpringCloud Feign傳對象參數(shù)調(diào)用失敗的問題
這篇文章主要介紹了解決SpringCloud Feign傳對象參數(shù)調(diào)用失敗的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
java類訪問權(quán)限與成員訪問權(quán)限解析
這篇文章主要針對java類訪問權(quán)限與成員訪問權(quán)限進(jìn)行解析,對類與成員訪問權(quán)限進(jìn)行驗證,感興趣的小伙伴們可以參考一下2016-02-02
Java中CountDownLatch進(jìn)行多線程同步詳解及實例代碼
這篇文章主要介紹了Java中CountDownLatch進(jìn)行多線程同步詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
利用線程實現(xiàn)動態(tài)顯示系統(tǒng)時間
編寫Applet小程序,通過在HTML文檔中接收參數(shù),顯示當(dāng)前的系統(tǒng)時間,需要的朋友可以參考下2015-10-10

