Java的GUI編程之列表和組合框的設(shè)計(jì)使用
列表和組合框是又一類(lèi)供用戶(hù)選擇的界面組件,用于在一組選擇項(xiàng)目選擇,組合框還可以輸入新的選擇。
列表
列表(JList)在界面中表現(xiàn)為列表框,是JList類(lèi)或它的子類(lèi)的對(duì)象。程序可以在列表框中加入多個(gè)文本選擇項(xiàng)條目。列表事件的事件源有兩種:
一是鼠標(biāo)雙擊某個(gè)選項(xiàng):雙擊選項(xiàng)是動(dòng)作事件,與該事件相關(guān)的接口是ActionListener,注冊(cè)監(jiān)視器的方法是addActionListener(),接口方法是actionPerformed(ActionEvent e)。
二是鼠標(biāo)單擊某個(gè)選項(xiàng):?jiǎn)螕暨x項(xiàng)是選項(xiàng)事件,與選項(xiàng)事件相關(guān)的接口是ListSelectionListener,注冊(cè)監(jiān)視器的方法是addListSelectionListener,接口方法是valueChanged(ListSelectionEvent e)。
JList 類(lèi)的常用構(gòu)造方法:
- JList():建立一個(gè)列表。
- JList(String list[]):建立列表,list是字符串?dāng)?shù)組,數(shù)組元素是列表的選擇條目。
JList類(lèi)的常用方法:
- getSelectedIndex():獲取選項(xiàng)的索引。返回最小的選擇單元索引;只選擇了列表中單個(gè)項(xiàng)時(shí),返回該選擇。
- getSelectedValue():獲取選項(xiàng)的值。
- getSelectedIndices():返回所選的全部索引的數(shù)組(按升序排列)。
- getSelectedValues(),:返回所有選擇值的數(shù)組,根據(jù)其列表中的索引順序按升序排序。
- getItemCount():獲取列表中的條數(shù)。
- setVisibleRowCount(int n):設(shè)置列表可見(jiàn)行數(shù)。
- setSelectionMode(int seleMode):設(shè)置列表選擇模型。選擇模型有單選和多選兩種。
- 單選:ListSelectionModel.SINGLE_SELECTION.
- 多選:ListSelectionModel.MULTIPLE.INTERVAL_SELECTION.
- remove(int n):從列表的選項(xiàng)菜單中刪除指定索引的選項(xiàng)。
- removeAll():刪除列表中的全部選項(xiàng)。
列表可以添加滾動(dòng)條,列表添加滾動(dòng)條的方法是先創(chuàng)建列表,然后再創(chuàng)建一個(gè)JScrollPane滾動(dòng)面板對(duì)象,在創(chuàng)建滾動(dòng)面板對(duì)象時(shí)指定列表。以下代碼示意為列表list2添加滾動(dòng)條:
JScrollPane jsp = new JScrollPane(list2);
【例】小應(yīng)用程序有兩個(gè)列表,第一個(gè)列表只允許單選,第二個(gè)列表允許多選。
import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyWindow extends JFrame implements ListSelectionListener{ JList list1,list2; String news[]={"人民日?qǐng)?bào)","新民晚報(bào)","浙江日?qǐng)?bào)","文匯報(bào)"}; String sports[]={"足球","排球","乒乓球","籃球"}; JTextArea text; MyWindow(String s){ super(s); Container con = getContentPane(); con.setBackground(Color.BLUE); con.setLayout(new GridLayout(2,2)); con.setSize(200,500); list1 = new JList(news); list1.setVisibleRowCount(3); list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list1.addListSelectionListener(this); list2 = new JList(sports); list2.setVisibleRowCount(2); list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); list2.addListSelectionListener(this); con.add(list1); con.add(list2); text= new JTextArea(10,20); con.add(text); this.setVisible(true); this.pack(); } public void valueChanged(ListSelectionEvent e){// 每當(dāng)選擇值發(fā)生更改時(shí)調(diào)用 if(e.getSource()==list1){ text.setText(null); Object listValue = ((JList) e.getSource()).getSelectedValue(); String seleName = listValue.toString(); for(int i=0;i<news.length;i++) if(news[i].equals(seleName)){ text.append(seleName+ "被選中\(zhòng)n"); } } else if(e.getSource()==list2){ text.setText(null); int tempList[] =list2.getSelectedIndices(); for(int i=0;i<tempList.length;i++) text.append(sports[tempList[i]] + "被選中\(zhòng)n"); } } } public class Example6_3 extends Applet{ MyWindow myWin = new MyWindow("列表示例"); }
組合框
組合框(JComboBox)是文本框和列表的組合,可以在文本框中輸入選項(xiàng),也可以單擊下拉按鈕從顯示的列表中進(jìn)行選擇。
組合框的常用構(gòu)造方法:
- JComboBox():建立一個(gè)沒(méi)有選項(xiàng)的JComboBox對(duì)象。
- JComboBox(JComboBoxModel aModel):用數(shù)據(jù)模型建立一個(gè)JComboBox對(duì)象。
- JComboBox(Object[]items):利用數(shù)組對(duì)象建立一個(gè)JComboBox對(duì)象。
組合框的其他常用方法有以下幾個(gè):
- addItem(Object obj):向組合框加選項(xiàng)。
- getItemCount():獲取組合框的條目總數(shù)。
- removeItem(Object ob):刪除指定選項(xiàng)。
- removeItemAt(int index):刪除指定索引的選項(xiàng)。
- insertItemAt(Object ob,int index):在指定的索引處插入選項(xiàng)。
- getSelectedIndex():獲取所選項(xiàng)的索引值(從0開(kāi)始)。
- getSelectedItem():獲得所選項(xiàng)的內(nèi)容。
- setEditable(boolean b):設(shè)為可編輯。組合框的默認(rèn)狀態(tài)是不可編輯的,需要調(diào)用本方法設(shè)定為可編輯,才能響應(yīng)選擇輸入事件。
在JComboBox對(duì)象上發(fā)生事件分為兩類(lèi)。一是用戶(hù)選定項(xiàng)目,事件響應(yīng)程序獲取用戶(hù)所選的項(xiàng)目。二是用戶(hù)輸入項(xiàng)目后按回車(chē)鍵,事件響應(yīng)程序讀取用戶(hù)的輸入。第一類(lèi)事件的接口是ItemListener;第二類(lèi)事件是輸入事件,接口是ActionListener。
【例】一個(gè)說(shuō)明組合框用法的應(yīng)用程序。程序中聲明的組合框子類(lèi)實(shí)現(xiàn)ItemLister接口和ActionListener接口。組合框子類(lèi)的窗口中設(shè)置了一個(gè)文本框和一個(gè)組合框,組合框中有三個(gè)選擇。實(shí)現(xiàn)接口的監(jiān)視方法將組合框的選擇結(jié)果在文本框中顯示。
public class Example6_4{ public static void main(String args[]){ ComboBoxDemo mycomboBoxGUI = new ComboBoxDemo(); } } class ComboBoxDemo extends JFrame implements ActionListener,ItemListener{ public static final int Width = 350; public static final int Height = 150; String proList[] = { "踢足球","打籃球","打排球" }; JTextField text; JComboBox comboBox; public ComboBoxDemo(){ setSize(Width,Height); setTitle("組合框使用示意程序"); Container conPane = getContentPane(); conPane.setBackground(Color.BLUE); conPane.setLayout(new FlowLayout()); comboBox = new JComboBox(proList); comboBox.addActionListener(this); combobox.addItemListener(this); comboBox.setEditable(true);//響應(yīng)鍵盤(pán)輸入 conPane.add(comboBox); text = new JTextField(10); conPane.add(text); this.setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource()==comboBox) text.setText(comboBox.getSelectedItem().toString()); } public void itemStateChanged(ItemEvent e){ if(e.getSource()==comboBox){ text.setText(comboBox.getSelectedItem().toString()); } } }
- java GUI編程之監(jiān)聽(tīng)操作實(shí)例分析
- java GUI編程之布局控制器(Layout)實(shí)例分析
- java GUI界面初步入門(mén)示例【AWT包】
- Java GUI實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- 使用Java編寫(xiě)GUI對(duì)話(huà)框的教程
- Java GUI制作簡(jiǎn)單的管理系統(tǒng)
- JAVA GUI自定義JPanel畫(huà)板背景
- Java GUI編程之貪吃蛇游戲簡(jiǎn)單實(shí)現(xiàn)方法【附demo源碼下載】
- JAVA圖形界面(GUI)之表格的示例代碼
- java Gui實(shí)現(xiàn)肯德基點(diǎn)餐收銀系統(tǒng)
- java GUI編程之paint繪制操作示例
相關(guān)文章
maven多個(gè)倉(cāng)庫(kù)查詢(xún)的優(yōu)先級(jí)順序案例講解
這篇文章主要介紹了maven多個(gè)倉(cāng)庫(kù)查詢(xún)的優(yōu)先級(jí)順序,考慮到我們常用的配置文件是conf/settings.xml和工程里面的pom.xml文件,我們針對(duì)這兩個(gè)文件的結(jié)合來(lái)分析倉(cāng)庫(kù)的使用順序,需要的朋友可以參考下2023-04-04application.yml的格式寫(xiě)法和pom.xml讀取配置插件方式
這篇文章主要介紹了application.yml的格式寫(xiě)法和pom.xml讀取配置插件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java中你絕對(duì)沒(méi)用過(guò)的一個(gè)關(guān)鍵字Record的使用
這篇文章主要給大家介紹一個(gè)?Java?中的一個(gè)關(guān)鍵字?Record,那?Record?關(guān)鍵字跟不可變類(lèi)有什么關(guān)系呢?看完今天的文章你就知道了,快跟隨小編一起學(xué)習(xí)一下吧2022-11-11Java及Android中常用鏈?zhǔn)秸{(diào)用寫(xiě)法簡(jiǎn)單示例
這篇文章主要介紹了Java及Android中常用鏈?zhǔn)秸{(diào)用寫(xiě)法,結(jié)合實(shí)例形式分析了java編程中的鏈?zhǔn)秸{(diào)用概念、簡(jiǎn)單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-01-01深入詳解Java中synchronized鎖升級(jí)的套路
synchronized鎖是啥?鎖其實(shí)就是一個(gè)對(duì)象,隨便哪一個(gè)都可以,Java中所有的對(duì)象都是鎖,換句話(huà)說(shuō),Java中所有對(duì)象都可以成為鎖。本文我們主要來(lái)聊聊synchronized鎖升級(jí)的套路,感興趣的可以收藏一下2023-04-04