Swing常用組件之單選按鈕和復(fù)選框
本文為大家分享了Swing單選按鈕和復(fù)選框的使用方法,供大家參考,具體內(nèi)容如下
JRadioButton構(gòu)造函數(shù):
JRadioButton():建立一個(gè)新的JRadioButton.
JRadioButton(Icon icon):建立一個(gè)有圖像但沒(méi)有文字的JRadioButton.
JRadioButton(Icon icon,boolean selected):建立一個(gè)有圖像但沒(méi)有文字的JRadioButton,且設(shè)置其初始狀態(tài)(有無(wú)被選取).
JRadioButton(String text):建立一個(gè)有文字的JRadioButton.
JRadioButton(String text,boolean selected):建立一個(gè)有文字的JRadioButton,且設(shè)置其初始狀態(tài)(有無(wú)被選?。?。
JRadioButton(String text,Icon icon):建立一個(gè)有文字且有圖像的JRadioButton,初始狀態(tài)為無(wú)被選取。
JRadioButton(String text,Icon icon,boolean selected):建立一個(gè)有文字且有圖像的JRadioButton,且設(shè)置其初始狀態(tài)(有無(wú)被選取)
要將RadioButton改成單選,我們必須用到ButtonGroup這個(gè)類。這個(gè)類位于javax.swing這個(gè)package下面,ButtonGroup類的主 要功能是:同一時(shí)間內(nèi)只會(huì)有一個(gè)組件的狀態(tài)為"on",其他皆為"off",也就是同一時(shí)間只有一個(gè)組件會(huì)被選取。而B(niǎo)uttonGroup類可 被AbstractButton下面的子類所使用,最常被使用的就是JRadioButton、JradioButtonMenu、Item與JToggleButton這些組件
ButtonGroup類的構(gòu)造方法如下:
ButtonGroup()創(chuàng)建一個(gè)新的ButtonGroup()
ButtonGroup()類的常用的方法如下:
public void add(AbstractButton b):添加按鈕到組中
public void clearSelection():清除選中內(nèi)容,即沒(méi)有選中按鈕組中的任何按鈕
pubic int getButtonCount():獲取此組中的按鈕數(shù)
public Enumeration<AbstractButton>getElemeent():獲取此組中的所用按鈕
public void remove (AbstractButton b):從按鈕中刪除按鈕
JCheckBox構(gòu)造函數(shù)
JCheckBox():建立一個(gè)新的JChcekBox.
JCheckBox(Icon icon):建立一個(gè)有圖像但沒(méi)有文字的JCheckBox.
JCheckBox(Icon icon,boolean selected):建立一個(gè)有圖像但沒(méi)有文字的JCheckBox,且設(shè)置其初始狀態(tài)(有無(wú)被選?。?。
JCheckBox(String text):建立一個(gè)有文字的JCheckBox.
JCheckBox(String text,boolean selected):建立一個(gè)有文字的JCheckBox,且設(shè)置其初始狀態(tài)(有無(wú)被選?。?br />
JCheckBox(String text,Icon icon):建立一個(gè)有文字且有圖像的JCheckBox,初始狀態(tài)為無(wú)被選取。
JCheckBox(String text,Icon icon,boolean selected):建立一個(gè)有文字且有圖像的JCheckBox,且設(shè)置其初始狀態(tài)(有無(wú)被選取 )。
當(dāng)JCheckBox中的選項(xiàng)被選取 或取消時(shí),它會(huì)觸發(fā)ItemEvent的事件,ItemEvent這個(gè)類共提供了4種方法可以使用,分別是getItem()、getItemSelectable()、 getStateChange()、paramString()。getItem()與paramString()方法會(huì)返回一些這個(gè)JCheckBox的狀態(tài)值。一般我們較少用到這兩 個(gè)方法。
getItemSelectable()相當(dāng)于getSource()方法,一樣都是返回觸發(fā)事件的組件,用來(lái)判斷是那個(gè)組件產(chǎn)生事件。getSource()方法是EventObject類所提供,而所有事件類都會(huì)繼承這個(gè)類,因此所有的事件我們均能用getSource() 方法來(lái)判斷到底是哪個(gè)組件觸發(fā)了事件。
最后getStateChange()方法會(huì)返回此組件到底有沒(méi)有被選取。這個(gè)方法會(huì)返回一個(gè)整數(shù)值。而我們可以用ItemEvent所提供的類 變量;若被選取則返回SELECTED,若沒(méi)有被選取則返回DESELECTED.
單選按鈕和復(fù)選框注冊(cè)和注銷ItemEvent事件監(jiān)聽(tīng)器的方法如下:
public void addItemListener(ItemListener l): 注冊(cè)指定的ItemListener事件監(jiān)聽(tīng)器
public void removeItemListener(ItemListener l): 注銷指定的ItemListener事件監(jiān)聽(tīng)器
package ch10;
import java.awt.event.*;
import javax.swing.*;
public class Vote extends JFrame implements ActionListener
{
private JPanel jp = new JPanel();
JRadioButton jrb1 = new JRadioButton("這個(gè)網(wǎng)站很好,很新穎!",true);
JRadioButton jrb2 = new JRadioButton("這個(gè)網(wǎng)站很普通,太一般");
JRadioButton jrb3 = new JRadioButton("這個(gè)網(wǎng)站很差,偶爾看一下");
JRadioButton jrb4 = new JRadioButton("這個(gè)網(wǎng)站太差了,不來(lái)了");
private JRadioButton[] jrb = new JRadioButton[]{jrb1,jrb2,jrb3,jrb4};
private ButtonGroup bg = new ButtonGroup();
JCheckBox jcb1 = new JCheckBox("界面比較漂亮");
JCheckBox jcb2 = new JCheckBox("內(nèi)容比較豐富");
JCheckBox jcb3 = new JCheckBox("增值服務(wù)比較好");
JCheckBox jcb4 = new JCheckBox("會(huì)員服務(wù)比較好");
private JCheckBox[] jcb =new JCheckBox[]{jcb1,jcb2,jcb3,jcb4};
private JButton [] jb = {new JButton("我要投票"),new JButton("我要重選")};
private JLabel[] jl = {new JLabel("這個(gè)網(wǎng)站給你的印象是:"),new JLabel("您認(rèn)為本站哪里做的比較好"),new JLabel("您投票的內(nèi)容是:")};
private JTextArea jt = new JTextArea();
private JScrollPane js= new JScrollPane(jt);
public Vote()
{
jp.setLayout(null);
for(int i=0;i<4;i++)
{
jrb[i].setBounds(30+170*i,40,170,30);
jcb[i].setBounds(30+120*i,100,120,30);
jp.add(jrb[i]);
jp.add(jcb[i]);
jcb[i].addActionListener(this);
jrb[i].addActionListener(this);
bg.add(jrb[i]);
if(i>1)
continue;
jl[i].setBounds(20,20+50*i,200,30);
jb[i].setBounds(380+120*i,200,100,20);
jp.add(jl[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);
}
jl[2].setBounds(20,150,120,30);
jp.add(jl[2]);
js.setBounds(120,150,500,50);
jp.add(js);
jt.setLineWrap(true);
jt.setEditable(false);
this.add(jp);
this.setTitle("網(wǎng)站滿意調(diào)查表");
this.setBounds(150,150,750,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent a)
{
if(a.getSource()==jb[1])
{
bg.clearSelection();
for(int i=0;i<jcb.length;i++)
jcb[i].setSelected(false);
jt.setText("");
}
else
{
StringBuffer temp1 = new StringBuffer("你認(rèn)為這個(gè)網(wǎng)站");
StringBuffer temp2 = new StringBuffer("");
for(int i=0;i<4;i++)
{
if(jrb[i].isSelected())
temp1.append(jrb[i].getText());
if(jcb[i].isSelected())
temp2.append(jcb[i].getText()+",");
}
if(temp2.length()==0)
jt.setText("請(qǐng)將兩項(xiàng)調(diào)查都選擇");
else
{
temp1.append("你認(rèn)為這個(gè)網(wǎng)站");
temp1.append(temp2.substring(0,temp2.length()-1));
jt.setText(temp1.toString());
}
}
}
public static void main(String args[])
{
new Vote();
}
}
效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Java操作MongoDB數(shù)據(jù)庫(kù)的示例代碼
這篇文章主要介紹了Java操作MongoDB的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-04-04
Java page cache回寫(xiě)機(jī)制案例詳解
這篇文章主要介紹了Java page cache回寫(xiě)機(jī)制案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
SpringBoot項(xiàng)目啟動(dòng)后立馬自動(dòng)關(guān)閉的解決方案
這篇文章主要介紹了SpringBoot項(xiàng)目啟動(dòng)后立馬自動(dòng)關(guān)閉的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
springboot下使用shiro自定義filter的個(gè)人經(jīng)驗(yàn)分享
這篇文章主要介紹了springboot下使用shiro自定義filter的個(gè)人經(jīng)驗(yàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

