本文實(shí)例講述了Java Swing組件下拉菜單控件JComboBox用法。分享給大家供大家參考,具體如下:
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),漣源網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:漣源等地區(qū)。漣源做網(wǎng)站價(jià)格咨詢:18982081108
JComboBox是Swing中的下拉菜單控件。它永遠(yuǎn)只能選中一個(gè)項(xiàng)目,然而比單選按鈕節(jié)省空間。如果使用setEditable設(shè)置為true則內(nèi)部選項(xiàng)的文本可以編輯,因此這種組件被稱為組合框。注意,對(duì)選項(xiàng)的編輯只會(huì)影響當(dāng)前項(xiàng),而不會(huì)改變列表內(nèi)容。可以使用addItem方法來添加選項(xiàng)列表,或者使用insertItemAt在任何位置插入選項(xiàng);然而如果有大量選項(xiàng)需要添加,這種方法是非常笨重的,可以先構(gòu)造一個(gè)DefaultComboBoxModel,使用addElement加載選項(xiàng),最后在調(diào)用JComboBox的setModel方法。
常用方法如下:

示例代碼:
JComboBoxBasicUseDemo.java
package awtDemo;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
/*
* 演示JComboBox的基本用法,以及事件響應(yīng)
*/
public class JComboBoxBasicUseDemo extends JFrame{
private static final long serialVersionUID = -8161981948004677531L;
int DEFAULT_WIDTH = 600;
int DEFAULT_HEIGHT = 400;
private JLabel label;
private JComboBox<String> faceCombo;
private static final int FONTSIZE = 12;
@SuppressWarnings("unused")
public JComboBoxBasicUseDemo(){
setTitle("JComboBoxDemo - www.jb51.net");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
//添加label
label = new JLabel("歡迎來到創(chuàng)新互聯(lián) www.jb51.net");
label.setFont(new Font("Serif",Font.PLAIN, FONTSIZE));
add(label, BorderLayout.CENTER);
//actionListener
ActionListener actionListener = new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof JComboBox){
@SuppressWarnings({ "unchecked", "rawtypes" })
JComboBox<String> comboBox = (JComboBox)e.getSource();
String fontName = comboBox.getSelectedItem().toString();
label.setFont(new Font(fontName, Font.PLAIN, FONTSIZE));
System.out.printf("%s%n", "actionPerformed called");
}
}
};
//popupMenuListener
PopupMenuListener popupMenuListener = new PopupMenuListener() {
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
System.out.println("下拉菜單取消");
}
@SuppressWarnings("unchecked")
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
System.out.println("下拉菜單合上");
JComboBox<String> source = (JComboBox<String>)e.getSource();
}
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
System.out.println("下拉菜單彈出");
}
};
//itemListener
ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
// TODO Auto-generated method stub
if(ItemEvent.SELECTED == arg0.getStateChange()){
String selectedItem = arg0.getItem().toString();
label.setFont(new Font(selectedItem, Font.PLAIN, FONTSIZE));
System.out.printf("new selected item : %s%n",selectedItem);
}
if(ItemEvent.DESELECTED == arg0.getStateChange()){
String selectedItem = arg0.getItem().toString();
System.out.printf("deselected item : %s%n",selectedItem);
}
}
};
//添加一個(gè)JComboBox
faceCombo = new JComboBox<String>();
faceCombo.setEditable(true);
//faceCombo.addActionListener(actionListener);
//faceCombo.addPopupMenuListener(popupMenuListener);
faceCombo.addItemListener(itemListener);
faceCombo.setEnabled(true);
faceCombo.addItem("Serif");
faceCombo.addItem("SansSerif");
faceCombo.addItem("Monospaced");
faceCombo.addItem("Dialog");
faceCombo.addItem("DialogInput");
add(faceCombo, BorderLayout.SOUTH);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//創(chuàng)建窗體并指定標(biāo)題
JComboBoxBasicUseDemo frame = new JComboBoxBasicUseDemo();
//關(guān)閉窗體后退出程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//自動(dòng)適配所有控件大小
//frame.pack();
//設(shè)置窗體位置在屏幕中央
frame.setLocationRelativeTo(null);
//顯示窗體
frame.setVisible(true);
}
}
本程序的基本功能是,通過選擇不同的item而相應(yīng)地改變界面中的英文字體(如本例中的www.jb51.net)。運(yùn)行效果如下:

下面分析JComboBox的事件響應(yīng)。程序中使用了3個(gè)不同的事件響應(yīng)函數(shù),他們具有不同的特性。
ActionListener:它在eclipse和netBeans兩個(gè)不同的IDE中表現(xiàn)出了不同的效果- -。在eclipse中,每當(dāng)選中新節(jié)點(diǎn)時(shí)被激活;而在netBeans中,選擇新節(jié)點(diǎn)時(shí)它總會(huì)被激活兩次。
PopupMenuListener:它將選擇節(jié)點(diǎn)的過程細(xì)分為3種類型:下拉菜單彈出;下拉菜單合上;下拉菜單取消。當(dāng)點(diǎn)開下拉菜單,然后放棄選擇時(shí),則下拉菜單取消、下拉菜單合上兩個(gè)事件先后被激活。
ItemListener:將節(jié)點(diǎn)的事件分為2種類型:SELECTED和DESELECTED。對(duì)于每種事件,均可以調(diào)用getItem()方法來獲取相應(yīng)節(jié)點(diǎn)。
因此,如果業(yè)務(wù)邏輯只關(guān)心最新被選中的節(jié)點(diǎn),那么使用ItemListener是比較合適的。
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
名稱欄目:JavaSwing組件下拉菜單控件JComboBox用法示例
當(dāng)前URL:http://chinadenli.net/article36/gdposg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、虛擬主機(jī)、全網(wǎng)營銷推廣、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)