java選擇框、單選框和單選按鈕
選擇框、單選框和單選按鈕都是選擇組件,選擇組件有兩種狀態(tài),一種是選中(on),另一種是未選中(off),它們提供一種簡單的 “on/off”選擇功能,讓用戶在一組選擇項(xiàng)目中作選擇。
選擇框
選擇框(JCheckBox)的選中與否開狀是一個(gè)小方框,被選中則在框中打勾。當(dāng)在一個(gè)容器中有多個(gè)選擇框,同時(shí)可以有多個(gè)選擇框被選中,這樣的選擇框也稱復(fù)選框。與選擇框相關(guān)的接口是ItemListener,事件類是ItemEvent。
JCheckBox類常用的構(gòu)造方法有以下3個(gè):
1.JCheckBox():用空標(biāo)題構(gòu)造選擇框。
2.JCheckBox(String s):用給定的標(biāo)題s構(gòu)造選擇框。
3.JCheckBox(String s, boolean b):用給定的標(biāo)題s構(gòu)造選擇框,參數(shù)b設(shè)置選中與否的初始狀態(tài)。
JCheckBox類的其他常用方法如下:
1.getState():獲取選擇框的狀態(tài)。
2.setState(boolean b):設(shè)置選擇框的狀態(tài)
3.getLabel():獲取選擇框的標(biāo)題。
4.setLabel(String s):設(shè)置選擇框的標(biāo)題。
5.isSelected():獲取選擇框是否被選中的狀態(tài)。
6.itemStateChanged(ItemEvent e):處理選擇框事件的接口方法。
7.getItemSelectable():獲取可選項(xiàng),獲取事件源。
8.addItemListener(ItemListener l):為選擇框設(shè)定監(jiān)視器。
9.removeItemListener(ItemListener l):移去選擇框的監(jiān)視器。
【例 11-11】聲明一個(gè)面板子類,面板子類對象有3個(gè)選擇框。
class Panel1 extends JPanel{
JCheckBox box1,box2,box3;
Panel1(){
box1 = new JCheckBox(“足球”);
box2 = new JCheckBox(“排球”);
box2 = new JCheckBox(“籃球”);
}
}
單選框
當(dāng)在一個(gè)容器中放入多個(gè)選擇框,且沒有ButtonGroup對象將它們分組,則可以同時(shí)選中多個(gè)選擇框。如果使用ButtonGroup對象將選擇框分組,同一時(shí)刻組內(nèi)的多個(gè)選擇框只允許有一個(gè)被選中,稱同一組內(nèi)的選擇框?yàn)閱芜x框。單選框分組的方法是先創(chuàng)建ButtonGroup對象,然后將希望為同組的選擇框添加到同一個(gè)ButtonGroup對象中。參見例6.2程序的面板子類Panel2的聲明,組內(nèi)有3個(gè)單選框。
單選按鈕
單選按鈕(JRadioButton)的功能與單選框相似。使用單選按鈕的方法是將一些單選按鈕用ButtonGroup對象分組,使同一組的單選按鈕只允許有一個(gè)被選中。單選按鈕與單選框的差異是顯示的樣式不同,單選按鈕是一個(gè)圓形的按鈕,單選框是一個(gè)小方框。
JRadioButton類的常用構(gòu)造方法有以下幾個(gè):
1.JRadioButton():用空標(biāo)題構(gòu)造單選按鈕。
2.JRadioButton(String s):用給定的標(biāo)題s構(gòu)造單選按鈕。
3.JRadioButton(String s,boolean b):用給定的標(biāo)題s構(gòu)造單選按鈕,參數(shù)b設(shè)置選中與否的初始狀態(tài)。
單選按鈕使用時(shí)需要使用ButtonGroup將單選按鈕分組,單選按鈕的分組方法是先創(chuàng)建對象,然后將同組的單選按鈕添加到同一個(gè)ButtonGroup對象中。參見例6.2程序的子類panel1的聲明,組內(nèi)有3個(gè)單選按鈕。
選擇項(xiàng)目事件處理
用戶對選擇框或單選按鈕做出選擇后,程序應(yīng)對這個(gè)選擇作出必要的響應(yīng),程序?yàn)榇艘幚磉x擇項(xiàng)目事件。選擇項(xiàng)目處理程序的基本內(nèi)容有:
1.監(jiān)視選擇項(xiàng)目對象的類要實(shí)現(xiàn)接口ItemListener,
2.程序要聲明和建立選擇對象,
3.為選擇對象注冊監(jiān)視器,
4.編寫處理選擇項(xiàng)目事件的接口方法itemStateChanged(ItemEvent e),在該方法內(nèi)用getItemSelectable()方法獲取事件源,并作相應(yīng)處理。
【例 11-12】處理選擇項(xiàng)目事件的小應(yīng)用程序。一個(gè)由3個(gè)單選按鈕組成的產(chǎn)品選擇組,當(dāng)選中某個(gè)產(chǎn)品時(shí),文本區(qū)將顯示該產(chǎn)品的信息。一個(gè)由3個(gè)選擇框組成的購買產(chǎn)品數(shù)量選擇框組,當(dāng)選擇了購買數(shù)量后,在另一個(gè)文本框顯示每臺(tái)價(jià)格。
import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class Panel1 extends JPanel{ JRadioButton box1,box2,box3; ButtonGroup g; Panel1(){ setLayout(new GridLayout(1,3)); g = new ButtonGroup(); box1 = new JRadioButton(MyWindow.fName[0]+"計(jì)算機(jī)",false); box2 = new JRadioButton(MyWindow.fName[1]+"計(jì)算機(jī)",false); box3 = new JRadioButton(MyWindow.fName[2]+"計(jì)算機(jī)",false); g.add(box1);g.add(box2);g.add(box3); add(box1);add(box2);add(box3); add(new JLabel("計(jì)算機(jī)3選1") ); } } class Panel2 extends JPanel{ JCheckBox box1,box2,box3; ButtonGroup g; Panel2(){ setLayout(new GridLayout(1,3)); g = new ButtonGroup(); box1 = new JCheckBox("購買1臺(tái) "); box2 = new JCheckBox("購買2臺(tái) "); box3 = new JCheckBox("購買3臺(tái) "); g.add(box1);g.add(box2);g.add(box3); add(box1);add(box2);add(box3); add(new JLabel(" 選擇1、2或3")); } } class MyWindow extends JFrame implements ItemListener{ Panel1 panel1; Panel2 panel2; JLabel label1,label2; JTextArea text1,text2; static String fName[] = {"HP","IBM","DELL"}; static double priTbl[][]={{1.20,1.15,1.10},{1.70,1.65,1.60},{1.65,1.60,1.58}}; static int productin = -1; MyWindow(String s){ super(s); Container con = this.getContentPane(); con.setLayout(new GridLayout(3,2)); this.setLocation(100,100); this.setSize(400,100); panel1 = new Panel1();panel2 = new Panel2(); label1 = new JLabel("產(chǎn)品介紹",JLabel.CENTER); label2 = new JLabel("產(chǎn)品價(jià)格",JLabel.CENTER); text1 = new JTextArea();text2 = new JTextArea(); con.add(label1);con.add(label2);con.add(panel1); con.add(panel2);con.add(text1);con.add(text2); panel1.box1.addItemListener(this); panel1.box2.addItemListener(this); panel1.box3.addItemListener(this); panel2.box1.addItemListener(this); panel2.box2.addItemListener(this); panel2.box3.addItemListener(this); this.setVisible(true);this.pack(); } public void itemStateChanged(ItemEvent e){ //選項(xiàng)狀態(tài)已改變 if(e.getItemSelectable()==panel1.box1){ //獲取可選項(xiàng) production =0; text1.setText(fName[0]+"公司生產(chǎn)");text2.setText(""); } else if(e.getItemSelectable()==panel1.box2){ production =1; text1.setText(fName[1]+"公司生產(chǎn)");text2.setText(""); } else if(e.getItemSelectable()==panel1.box3){ production =2; text1.setText(fName[2]+"公司生產(chǎn)");text2.setText(""); } else{ if(production ==-1) return; if(e.getItemSelectable()==panel2.box1){ text2.setText(""+priTbl[production][0]+"萬元/臺(tái)"); } else if(e.getItemSelectable()==panel2.box2){ text2.setText(""+priTbl[production][1]+"萬元/臺(tái)"); } else if(e.getItemSelectable()==panel2.box3){ text2.setText(""+priTbl[production][2]+"萬元/臺(tái)"); } } } } public class Example6_2 extends Applet{ MyWindow myWin = new MyWindow("選擇項(xiàng)目處理示例程序"); }
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
SpringBoot中異常處理實(shí)戰(zhàn)記錄
在我們實(shí)際項(xiàng)目開放中經(jīng)常需要我們處理很多的異常,如何在spring boot項(xiàng)目里面實(shí)現(xiàn)異常處理呢,下面這篇文章主要給大家介紹了關(guān)于SpringBoot中異常處理的相關(guān)資料,需要的朋友可以參考下2022-05-05Java中內(nèi)部類使用方法實(shí)戰(zhàn)案例分析
這篇文章主要介紹了Java中內(nèi)部類使用方法,結(jié)合具體案例形式分析了Java內(nèi)部類原理、調(diào)用方法及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2019-09-09Java封裝數(shù)組實(shí)現(xiàn)包含、搜索和刪除元素操作詳解
這篇文章主要介紹了Java封裝數(shù)組實(shí)現(xiàn)包含、搜索和刪除元素操作,結(jié)合實(shí)例形式分析了java針對數(shù)組元素的查找、刪除、判斷等相關(guān)操作封裝與使用技巧,需要的朋友可以參考下2020-03-03Java正則表達(dá)式matcher.group()用法代碼
這篇文章主要給大家介紹了關(guān)于Java正則表達(dá)式matcher.group()用法的相關(guān)資料,最近在做一個(gè)項(xiàng)目,需要使用matcher.group()方法匹配出需要的內(nèi)容,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-08-08詳解springcloud之服務(wù)注冊與發(fā)現(xiàn)
本次分享的是關(guān)于springcloud服務(wù)注冊與發(fā)現(xiàn)的內(nèi)容,將通過分別搭建服務(wù)中心,服務(wù)注冊,服務(wù)發(fā)現(xiàn)來說明,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-06-06