1. 程式人生 > >JAVA元件大全複選框,選項按鈕,複選方框,下拉式列表的使用介紹

JAVA元件大全複選框,選項按鈕,複選方框,下拉式列表的使用介紹

7-1:使用JCheckBox元件:
類層次結構圖:
   java.lang.Object
     --java.awt.Component
      --java.awt.Container
        --javax.swing.JComponent
           --javax.swing.AbstractButton
             --javax.swing.JToggleButton
               --javax.swing.JCheckBox
    JCheckBox與JRadioButton為JToggleButton的子類,因此它們可以使用AbstractButton抽象類裡面許多好用的方法,如addItemLi
stener()、setText()、isSelected()等等。
建構函式:
    JCheckBox():建立一個新的JChcekBox.
    JCheckBox(Icon icon):建立一個有影象但沒有文字的JCheckBox.
    JCheckBox(Icon icon,boolean selected):建立一個有影象但沒有文字的JCheckBox,且設定其初始狀態(有無被選取)。   
    JCheckBox(String text):建立一個有文字的JCheckBox.
    JCheckBox(String text,boolean selected):建立一個有文字的JCheckBox,且設定其初始狀態(有無被選取)。
    JCheckBox(String text,Icon icon):建立一個有文字且有影象的JCheckBox,初始狀態為無被選取。
    JCheckBox(String text,Icon icon,boolean selected):建立一個有文字且有影象的JCheckBox,且設定其初始狀態(有無被選取
                                                       )。
7-1-1:構造JCheckBox元件:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class JCheckBox1{
   public static void main(String[] args){
      JFrame f=new JFrame("JCheckBox1");
      Container contentPane=f.getContentPane();
      contentPane.setLayout(new GridLayout(2,1)); 
      JPanel p1=new JPanel();
      p1.setLayout(new GridLayout(1,3));
      p1.setBorder(BorderFactory.createTitledBorder("你最喜歡哪一家快餐店呢?"));
      JCheckBox c1=new JCheckBox("麥當勞");
      JCheckBox c2=new JCheckBox("肯德基");
      JCheckBox c3=new JCheckBox("21世紀");
      p1.add(c1);
      p1.add(c2);
      p1.add(c3);
      JPanel p2=new JPanel();
      p2.setLayout(new GridLayout(2,1));
      p2.setBorder(BorderFactory.createTitledBorder("以下為JCheckBox的圖形示範:"));
      JCheckBox c4=new JCheckBox("圖形1",new ImageIcon(".//icons//x.jpg"));
      JCheckBox c5=new JCheckBox("圖形2",new ImageIcon(".//icons//x.jpg"));
      p2.add(c4);
      p2.add(c5);
      contentPane.add(p1);
      contentPane.add(p2);
      f.pack();
      f.show();
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
               System.exit(0); 
            } 
        }); 
   } 
}


7-1-2:JCheckBox事件處理:
      你可以在上面的選項中勾選你喜歡吃的快餐店,在勾選的過程中,你可以發現它是可以複選的。但在圖形選項中,我們並無法
清楚使用者是否選擇此專案,因為選或不選圖形都一樣。為解決這個問題,我們要使用到事件處理方法。當JCheckBox中的選項被選取
或取消時,它會觸發ItemEvent的事件,ItemEvent這個類共提供了4種方法可以使用,分別是getItem()、getItemSelectable()、
getStateChange()、paramString()。getItem()與paramString()方法會返回一些這個JCheckBox的狀態值。一般我們較少用到這兩
個方法。
     getItemSelectable()相當於getSource()方法,一樣都是返回觸發事件的元件,用來判斷是那個元件產生事件。在上一章中我
們曾經說過,getSource()方法是EventObject類所提供,而所有事件類都會繼承這個類,因此所有的事件我們均能用getSource()
方法來判斷到底是哪個元件觸發了事件。
    最後getStateChange()方法會返回此元件到底有沒有被選取。這個方法會返回一個整數值。而我們可以用ItemEvent所提供的類
變數;若被選取則返回SELECTED,若沒有被選取則返回DESELECTED.
    下面這個範例我們即利用ItemListener來選取圖形產生變化,ItemListener這個inteface只有定義一個方法,那就是
itemStateChange(ItemEvent e),因此我們只需實作這個方法.




import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class JCheckBox2 implements ItemListener
{
     JFrame f = null;
     JCheckBox c4 = null;
     JCheckBox c5 = null;
    
     JCheckBox2(){
         f = new JFrame("JCheckBox");
         Container contentPane = f.getContentPane();
         contentPane.setLayout(new GridLayout(2,1));
         JPanel p1 = new JPanel();
         p1.setLayout(new GridLayout(1,3));
         p1.setBorder(BorderFactory.createTitledBorder("您最喜歡哪一家速食店呢?")); 
         JCheckBox c1 = new JCheckBox("麥當勞");
         JCheckBox c2 = new JCheckBox("肯德雞");
         JCheckBox c3 = new JCheckBox("21世紀");
         p1.add(c1);
         p1.add(c2);
         p1.add(c3);
         JPanel p2 = new JPanel();
         p2.setLayout(new GridLayout(2,1));
         p2.setBorder(BorderFactory.createTitledBorder("您喜歡哪種程式語言,喜歡的請打勾:")); 
         c4 = new JCheckBox("JAVA",new ImageIcon(".//icons//x.jpg"));
         c5 = new JCheckBox("C++",new ImageIcon(".//icons//x.jpg"));
         c4.addItemListener(this);
         c5.addItemListener(this);
         p2.add(c4);
         p2.add(c5);
         contentPane.add(p1);
         contentPane.add(p2);
         f.pack();
         f.show();
         f.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                     System.exit(0);
             }
         });
     }
    
     public void itemStateChanged(ItemEvent e)
     {
         if (e.getStateChange() == e.SELECTED)
         {
             if(e.getSource() == c4)
                 c4.setIcon(new ImageIcon(".//icons//r.jpg"));
             if(e.getSource() == c5)
                 c5.setIcon(new ImageIcon(".//icons//r.jpg"));
            
         }
         else
         {
             if(e.getSource() == c4)
                 c4.setIcon(new ImageIcon(".//icons//x.jpg"));
             if(e.getSource() == c5)
                 c5.setIcon(new ImageIcon(".//icons//x.jpg"));
         }
     }
      
     public static void main(String args[])
     {
         new JCheckBox2();
     }
}
7-2:JRadioButton的使用:
    java.lang.Object
     --java.awt.Component
       --java.awt.Container
        --javax.swing.JComponent
         --javax.swing.Abstractbutton
          --javax.swing.JToggleButton
             --javax.swing.JRadioButton


    JRadioButtonBN J JToggleButton的一個了類,因此它也可以使用AbstractButton抽象類裡的方法。如同前面所述,JChexkBox
主要用在多重選擇時機,而JRadioButton則是運用在單一選擇時機。
   JRadioButton建構函式:
    JRadioButton():建立一個新的JRadioButton.
    JRadioButton(Icon icon):建立一個有影象但沒有文字的JRadioButton.
    JRadioButton(Icon icon,boolean selected):建立一個有影象但沒有文字的JRadioButton,且設定其初始狀態(有無被選取).   
    JRadioButton(String text):建立一個有文字的JRadioButton.
    JRadioButton(String text,boolean selected):建立一個有文字的JRadioButton,且設定其初始狀態(有無被選取)。
    JRadioButton(String text,Icon icon):建立一個有文字且有影象的JRadioButton,初始狀態為無被選取。
    JRadioButton(String text,Icon icon,boolean selected):建立一個有文字且有影象的JRadioButton,且設定其初始狀態(有無
                                                    被選取。
7-2-1:構造JRadioButton元件與事件處理:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class JRadioButton1 implements ItemListener
{
     JFrame f = null;
     JRadioButton r4 = null;
     JRadioButton r5 = null;
    
     JRadioButton1(){
         f = new JFrame("JRadioButton");
         Container contentPane = f.getContentPane();
         contentPane.setLayout(new GridLayout(2,1));
         JPanel p1 = new JPanel();
         p1.setLayout(new GridLayout(1,3));
         p1.setBorder(BorderFactory.createTitledBorder("您最喜歡哪一家速食店呢?")); 
         JRadioButton r1 = new JRadioButton("麥當勞");
         JRadioButton r2 = new JRadioButton("肯德雞");
         JRadioButton r3 = new JRadioButton("21世紀");
         p1.add(r1);
         p1.add(r2);
         p1.add(r3);
         JPanel p2 = new JPanel();
         p2.setLayout(new GridLayout(2,1));
         p2.setBorder(BorderFactory.createTitledBorder("您喜歡哪種程式語言? 喜歡的請打勾")); 
         r4 = new JRadioButton("JAVA",new ImageIcon(".//icons//x.jpg"));
         r5 = new JRadioButton("C++",new ImageIcon(".//icons//x.jpg"));
         r4.addItemListener(this);
         r5.addItemListener(this);
         p2.add(r4);
         p2.add(r5);
         contentPane.add(p1);
         contentPane.add(p2);
         f.pack();
         f.show();
         f.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                     System.exit(0);
             }
         });
     }
    
     public void itemStateChanged(ItemEvent e)
     {
         if (e.getStateChange() == e.SELECTED)
         {
             if(e.getSource() == r4)
                 r4.setIcon(new ImageIcon(".//icons//r.jpg"));
             if(e.getSource() == r5)
                 r5.setIcon(new ImageIcon(".//icons//r.jpg"));
            
         }
         else
         {
             if(e.getSource() == r4)
                 r4.setIcon(new ImageIcon(".//icons//x.jpg"));
             if(e.getSource() == r5)
                 r5.setIcon(new ImageIcon(".//icons//x.jpg"));
         }
     }
      
     public static void main(String args[])
     {
         new JRadioButton1();
     }
}
    要將RadioButton改成單選,我們必須用到ButtonGroup這個類。這個類位於javax.swing這個package下面,ButtonGroup類的主
要功能是:同一時間內只會有一個元件的狀態為"on",其他皆為"off",也就是同一時間只有一個元件會被選取。而ButtonGroup類可
被AbstractButton下面的子類所使用,最常被使用的就是JRadioButton、JradioButtonMenu、Item與JToggleButton這些元件。
下面是ButtonGroup的類層次結構圖:
ButtonGroup的類層次結構圖:
java.lang.Object
    --javax.swing.ButtonGroup
    我們更改上例,使RadioButton變成單選吧!


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class JRadioButton2 implements ItemListener{
   JFrame f=null;
   JRadioButton r4=null;
   JRadioButton r5=null;
  
   JRadioButton2(){
     f=new JFrame("JRadioButton2"); 
     Container contentPane=f.getContentPane();
     contentPane.setLayout(new GridLayout(2,1));
     JPanel p1=new JPanel();
     p1.setLayout(new GridLayout(1,3));
     p1.setBorder(BorderFactory.createTitledBorder("你最喜歡哪一家快餐店呢?"));
     JRadioButton r1=new JRadioButton("麥當勞"); 
     JRadioButton r2=new JRadioButton("肯德基"); 
     JRadioButton r3=new JRadioButton("21世紀"); 
     p1.add(r1);
     p1.add(r2);
     p1.add(r3);
/*
   將3個RadioButton物件放進ButtonGroup中,表示此3個RadioButton同一時間只有一個RadioButton的狀態可以為"on";
*/
     ButtonGroup bgroup1=new ButtonGroup();
     bgroup1.add(r1);                          
     bgroup1.add(r2);                          
     bgroup1.add(r3); 
     JPanel p2=new JPanel();
     p2.setLayout(new GridLayout(2,1));
     p2.setBorder(BorderFactory.createTitledBorder("你最喜歡哪種程式語言,喜歡的請打勾:"));                        
     r4=new JRadioButton("java",new ImageIcon(".//icons//x.jpg"));
     r5=new JRadioButton("c++",new ImageIcon(".//icons//x.jpg"));
     r4.addItemListener(this);
     r5.addItemListener(this);
     p2.add(r4);
     p2.add(r5);
     ButtonGroup bgroup2=new ButtonGroup();
     bgroup2.add(r4);
     bgroup2.add(r5);
     contentPane.add(p1);
     contentPane.add(p2);
     f.pack();
     f.show();
     f.addWindowListener(new WindowAdapter(){
         public void windowClosing(WindowEvent e){
         System.exit(0);
         }       
     });    
   } 
   public void itemStateChanged(ItemEvent e){
     if (e.getStateChange()==e.SELECTED){
       if (e.getSource()==r4)
          r4.setIcon(new ImageIcon(".//icons//r.jpg"));
       if (e.getSource()==r5)
          r5.setIcon(new ImageIcon(".//icons//r.jpg"));
     }else{
       if (e.getSource()==r4)
          r4.setIcon(new ImageIcon(".//icons//x.jpg"));
       if (e.getSource()==r5)
          r5.setIcon(new ImageIcon(".//icons//x.jpg"));
     }
   }
   public static void main(String[] args){
     new JRadioButton2();
   }
}


7-3:JList的使用:
類層次結構圖:
    java.lang.Object
      --java.awt.Component
       --java.awt.Container
        --javax.swing.JComponent
         --javax.swing.JList
     JList與JCheckBox有點相似,都可以讓你選擇一到多個選項,較不同的是,JList的選項方式是整列選取。我們先來看看JList
所提供的建構函式,方便迅速建立JList物件,如下所示:
JList建構函式:
JList():建立一個新的JList元件。
JList(ListModel dataModel):利用ListModel建立一個新的JList元件.
JList(Object[] listData):利用Array物件建立一個新的JList元件。
JList(Vector listData):利用Vector物件建立一個新的JList元件。


7-3-1:建立一般的JList:


一般我們若不需要在JList中加入Icon影象,通常會用第3或第4個建構函式建立JList物件。而這兩個最大的不同在於使用Array對
象建立JList元件就無法改變專案的數量。對於專案數量經常改變的環境來說,以Vector物件來建立JList元件當然比較適合。例如
一個賣手機的店家,可能動不動就會有新手機上市,此時若用Array物件就不是很適當了!
我們來看個範例看怎麼構造一個簡單的JList吧!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;


public class JList1
{
     public static void main(String args[])
     {
         JFrame f = new JFrame("JList");
         Container contentPane = f.getContentPane();
         contentPane.setLayout(new GridLayout(1,2));
         String[] s = {"美國","日本","大陸","英國","法國"};
         Vector v = new Vector();
         v.addElement("Nokia 8850");
         v.addElement("Nokia 8250");
         v.addElement("Motorola V8088");
         v.addElement("Motorola V3688x");
         v.addElement("Panasonic GD92");
         v.addElement("其他");
        
         JList list1 = new JList(s);
         list1.setBorder(BorderFactory.createTitledBorder("您最喜歡到哪個國家玩呢?"));
        
         JList list2 = new JList(v); 
         list2.setBorder(BorderFactory.createTitledBorder("您最喜歡哪一種手機?"));


         contentPane.add(new JScrollPane(list1));
         contentPane.add(new JScrollPane(list2));
         f.pack();
         f.show();
         f.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                     System.exit(0);
             }
         });
     }
}
   在這個範例中,當視窗變小時,JList並不會有滾動(ScrollBar)的效果,所以可能無法看到比較下面的選項。若我們要有滾動的
效果,必須將JList放入滾動面版中(JScrollPane),如我們在程式改為:
        contentPane.add(new JScrollPane(list1));
        contentPane.add(new JScrollPane(list2));
   如此就有滾動的效果了,若我們要有多個選項呢?在JList中有3種選擇模式(Selection Mode)可供我們使用,分別是單一選擇、
連續區間選擇、與多重選擇。我們可以在ListSelectionModel這個interface中找到這3個常數值,如下:
     static int SINGLE_SELECTION:一次只能選擇一個專案。
     static int SINGLE_INTERVAL_SELECTION:按住[shift]鍵,可以對某一邊續的專案作選取。
     static int MULTIPLE_INTERVAL_SELECTION:沒有任何限制。可作單一選擇,連續區間選擇,或對不連續的專案作多重選擇(按
住[Ctrl]鍵)。多得選擇是java對JList的預設值,因此在上例中你可以在JList中作這3種模式的選擇方式。


     設定選擇模式可以利用JList所提供的setSelectionMode(int selectionMode)方法。例如,若我們將上例改成如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;


public class JList2
{
     public static void main(String args[])
     {
         JFrame f = new JFrame("JList");
         Container contentPane = f.getContentPane();
         contentPane.setLayout(new GridLayout(1,3));
         String[] s1 = {"美國","日本","大陸","英國","法國","義大利","澳洲","韓國"};
         String[] s2 = {"范志毅","符兵","周寧","楊晨","高鋒","南方","其他"};
         Vector v = new Vector();
         v.addElement("Nokia 3310");
         v.addElement("Nokia 8850");
         v.addElement("Nokia 8250");
         v.addElement("Motorola V8088");
         v.addElement("Motorola V3688x");
         v.addElement("Panasonic GD92");
         v.addElement("Panasonic GD93");
         v.addElement("NEC DB2100");
         v.addElement("Alcatel OT500");
         v.addElement("Philips Xenium
[email protected]
");
         v.addElement("Ericsson T29sc");
         v.addElement("其他");
        
         JList list1 = new JList(s1);
         list1.setBorder(BorderFactory.createTitledBorder("您最喜歡到哪個國家玩呢?"));
        
         JList list2 = new JList(s2);
         list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         list2.setBorder(BorderFactory.createTitledBorder("您最喜歡哪個運動員呢?"));
        
         JList list3 = new JList(v); 
         list3.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
         list3.setBorder(BorderFactory.createTitledBorder("您最喜歡哪一種手機?"));


         contentPane.add(new JScrollPane(list1));
         contentPane.add(new JScrollPane(list2));
         contentPane.add(new JScrollPane(list3));
         f.pack();
         f.show();
         f.addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e) {
                     System.exit(0);
             }
         });
     }
}

相關推薦

選項按鈕列表方框列表的使用與介紹

閱前宣告: http://blog.csdn.net/heimaoxiaozi/archive/2007/01/19/1487884.aspx 7-1:使用JCheckBox元件: 類層次結構圖:   java .lang.Object     --java.

JAVA元件大全選項按鈕方框列表的使用介紹

7-1:使用JCheckBox元件: 類層次結構圖:    java.lang.Object      --java.awt.Component       --java.awt.Container         --javax.swing.JComponent            --javax.swi

jQueryMobile的元件——(checkbox)和單鈕(radio)

jQueryMobile框架為原生的html表單元素封裝了新的表現形式,對觸屏裝置的操作進行了優化。 data-theme="b"——指明元素的主題為黑色主題; <!DOCTYPE html> <html> <head lang="en">

leaflet 在地圖popup彈中新增按鈕並點響應(vue2leaflet)設定popup的content屬性新增button

效果如圖,點選【進入】按鈕,彈出alert提示框。當然這裡可以把alert換成其他響應需求。  首先給popup的content新增button: <l-popup :content="profile1-1+ '<br><button id=

使用css美化單(radio)和(checkbox)的樣式

//html <label> <input name="checkbox" class="checkbox" type="checkbox"/> <s>

從一個多選項移動到另一多中的js小程式碼

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict

原生態js對的美化並且可用。

原生態js美化複選框,當去掉js之後,還可以保留原有的複選框效果,最難得的是它可以在一個網頁中多次複用~,感興趣的程式猿可以看看。 css: .checkbox{ display:inline-block; width:20px;height:20px; border-ra

原生態js對單的美化並且可用。

基於純js對單選框的美化,不僅可以設定想設定的顏色,也可以在同一頁面複用多個。還會對程式碼進行詳細的解析,對剛入門的你有一定的幫助哦~ css:     .radio{         display:

css3 寫checkbox 標籤單和實現類似於多的樣式改寫

實現單選框的效果: <p class="login-p"> <span> <input type="checkbox" class="checkbox" checked="checked"/>

(總結)Swing元件的使用---選單(menu),彈出選單(JPopupMenu),選項卡窗體(JTabbedPane)

 選單是GUI中最常用的元件,選單不是Component類的子類,不能放置在普通容器中,不受佈局管理器的約束,只能放置在選單欄中.  選單元件由選單欄 (MenuBar)、選單(Menu)和選單項(MenuItem)三部分組成。 一個選單欄由若干個選單組成,一個選單又由若干

winform中的datagridview有新增按鈕響應按鈕的點事件

有兩個事件可以響應: 觸發事件是DataGridView的CellContentClick或CellClick事件 但是可惜的是兩個都不是專門響應按鈕列事件的, CellClick是單擊單元格任意部分發生 CellContentClick是單擊單元格內容時發生

Excel VBA 根據單元格的值來改變另一個單元格的值

在很多的報表開發中,需要用到VBA去設定Excel的一些規則。  以下是一個根據下拉框單元格的值來給特定單元格進行賦值的程式碼: Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Resume

dorado7.x datatype中設定mapping mapvalues之後form中對應欄位並未顯示問題解決辦法

dorado7.x datatype中設定mapping mapvalues,如下圖: form中對應欄位並未出現下拉框,經排查,需要在form中設定createPrivateDataSet為true: 設定後,展現下拉框。

載入重新整理列表資料多條目列表,預設圖圓角

package yxr.com.wekk2_lixie; //viewpager+Fragment滑動 import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import

JavaScript解析Json實現動態修改多級選擇列表控制元件Select

最終效果: 根據上級選單所選,決定下級選單的列表項內容: 資料來源 首先讀取資料庫中的資料得到資料,由於資料庫中的資料是分散的幾個二維表格,查詢出來的資料是Map鍵值對的List集合,不能直

用bootstrap做選單並使用jQuery實現從伺服器載入選單的item。

用bootstrap做下拉選單,並使用jQuery實現從伺服器非同步載入下拉選單的item。 前臺程式碼: <div class="form-group">

IOS控制元件系列二---優雅的UITableView的MVC模式設計,支援自定義重新整理/上提載入更多檢視(含swift)

demo效果如下: 本小框架設計原則依舊按照之前的慣例: 1.擴充套件性好,程式碼不冗餘(整個重新整理的頭部與底部程式碼不超過300行)。 2.邏輯清晰。 3.回撥介面清晰。 4.移植性好。 對於擴充套件性本框架擴充套件點如下: 1.框架中的

自定義控制元件之:treelistCombox 列表

先來一張效果圖 下面是treelistcombox原始碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; us

android 極光推送快速自動整合及自定義通知樣式及雙指通知欄顯示全部內容

一,整合步驟: 1.極光推送官網,註冊,登入,建立應用,用專案包名獲取AppKey: 注:包名必須與專案的包名一致 2.在 module 的 gradle 中新增依賴和支援: android { ...... defaultConfig {

Android使用控制元件Spinner實現選單列表

實現效果如下: 1.實現程式碼 package com.example.testspanner; import java.util.ArrayList; import java.util.Li