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(單選按鈕)
單選按鈕只能選中一個(gè),當(dāng)按下一個(gè)按鈕的時(shí)候,先前按下的按鈕就會彈起,對于單選按鈕來說,當(dāng)一個(gè)按鈕被選中時(shí),先前選中的按鈕就會自動(dòng)取消選中。
但是單選按鈕本身不具備這種功能,要想實(shí)現(xiàn)單選按鈕之間的互斥,需要用java.swing.ButtonGroup類,它是一個(gè)不可見的組件,不需要添加在容器中顯示,只在邏輯上表示一個(gè)單選按鈕,將多個(gè)單選按鈕添加到同一個(gè)單選按鈕組對象中,就能實(shí)現(xiàn)按鈕的單選功能。
單選按鈕的構(gòu)造方法
方法描述 | 功能說明 |
---|---|
JRadioButton() | 創(chuàng)建一個(gè)沒有文本信息,始終狀態(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 { //單選按鈕對象 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)聽器 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面板的背景就會相應(yīng)的變成灰色,粉色,黃色。先為按鈕設(shè)置一個(gè)事件監(jiān)聽器,用來響應(yīng)用戶單擊單選按鈕的操作,在actionPerformed()方法中定義一個(gè)Color類型的變量color,并根據(jù)方法傳入的text值進(jìn)行判斷,根據(jù)color的值設(shè)置pallet的背景顏
復(fù)選框(JCheckBox)
有選中和未選中兩種狀態(tài),如果用戶想要接收的輸入只有是和非,則可以通過復(fù)選框來切換狀態(tài),如果復(fù)選框有多個(gè),則用戶可以選擇其中一個(gè)或則多個(gè)。
復(fù)選框的構(gòu)造方法
方法描述 | 功能敘述 |
---|---|
JCheckBox() | 創(chuàng)建一個(gè)沒有文本信息,初始狀態(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í),會出現(xiàn)下拉式的選擇列表,用戶可以從中選擇其中一項(xiàng)并顯示。分為可編輯和不可編輯兩種形式,對于不可編輯的組合框,用戶只能在現(xiàn)有的選項(xiàng)列表中進(jìn)行選擇,對于可編輯的組合框,用戶既可以在現(xiàn)有的選項(xiàng)中進(jìn)行選擇,還可以自己輸入新的內(nèi)容,自己輸入的內(nèi)容只能作為當(dāng)前項(xiàng)顯示,并不會添加到組合框的選項(xiàng)列表中。
組合框的構(gòu)造方法
方法描述 | 功能敘述 |
---|---|
JComBox() | 創(chuàng)建一個(gè)沒有可選項(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) //將指定的對象作為選項(xiàng)添加到下拉列表框中
void insertItemAt(Object anObject,int index) //在下拉列表框中的指定索引處插入項(xiàng)
void removeltem(0bject anObject) //在下拉列表框中刪除指定的對象項(xiàng)
void removeItemAt(int anlndex) //在下拉列表框中刪除指定位置的對象項(xiàng)
void removeAllItems() //從下拉列表框中刪除所有項(xiàng)
int getItemCount() //返回下拉列表框中的項(xiàng)數(shù)
Object getItemAt(int index) //獲取指定索引的列表項(xiàng),索引從 0 開始
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("請選擇城市"); 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(); } }
首先為組合框添加一個(gè)事件監(jiān)聽器,然后再actionPerformed()方法中,通過調(diào)用comboBox的getSelectedItem()方法獲得用戶所選的item,如果為城市名調(diào)用filed的setText(item)方法將城市名顯示在文本框中;如果item為"請選擇城市"則將文本框的內(nèi)容清空。
小結(jié)
以上就是我對于Swing中幾種常見按鈕的理解,以便于我們之后在不同開發(fā)中根據(jù)不同的情況設(shè)置不同的按鈕,提高用戶的體驗(yàn)感。
到此這篇關(guān)于Java詳解Swing中的幾種常用按鈕的使用的文章就介紹到這了,更多相關(guān)Java Swing按鈕內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java動(dòng)態(tài)代理和AOP應(yīng)用示例
這篇文章主要介紹了Java動(dòng)態(tài)代理和AOP應(yīng)用,結(jié)合實(shí)例形式分析了java動(dòng)態(tài)代理在AOP面向切面編程中的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-07-07一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程
使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時(shí)間了,項(xiàng)目在技術(shù)上已經(jīng)沒有什么難點(diǎn)了,基于現(xiàn)有的技術(shù)就可以實(shí)現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于整合SSM框架:Spring MVC + Spring + MyBatis的相關(guān)資料,需要的朋友可以參考下。2017-07-07mybatis中注解與xml配置的對應(yīng)關(guān)系和對比分析
這篇文章主要介紹了mybatis中注解與xml配置的對應(yīng)關(guān)系和對比分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08解決SpringCloud Feign傳對象參數(shù)調(diào)用失敗的問題
這篇文章主要介紹了解決SpringCloud Feign傳對象參數(shù)調(diào)用失敗的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06java類訪問權(quán)限與成員訪問權(quán)限解析
這篇文章主要針對java類訪問權(quán)限與成員訪問權(quán)限進(jìn)行解析,對類與成員訪問權(quán)限進(jìn)行驗(yàn)證,感興趣的小伙伴們可以參考一下2016-02-02Java中CountDownLatch進(jìn)行多線程同步詳解及實(shí)例代碼
這篇文章主要介紹了Java中CountDownLatch進(jìn)行多線程同步詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03利用線程實(shí)現(xiàn)動(dòng)態(tài)顯示系統(tǒng)時(shí)間
編寫Applet小程序,通過在HTML文檔中接收參數(shù),顯示當(dāng)前的系統(tǒng)時(shí)間,需要的朋友可以參考下2015-10-10