Java Swing組件下拉菜單控件JComboBox用法示例
本文實例講述了Java Swing組件下拉菜單控件JComboBox用法。分享給大家供大家參考,具體如下:
JComboBox是Swing中的下拉菜單控件。它永遠只能選中一個項目,然而比單選按鈕節(jié)省空間。如果使用setEditable設置為true則內(nèi)部選項的文本可以編輯,因此這種組件被稱為組合框。注意,對選項的編輯只會影響當前項,而不會改變列表內(nèi)容??梢允褂胊ddItem方法來添加選項列表,或者使用insertItemAt在任何位置插入選項;然而如果有大量選項需要添加,這種方法是非常笨重的,可以先構(gòu)造一個DefaultComboBoxModel,使用addElement加載選項,最后在調(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的基本用法,以及事件響應 */ 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.dbjr.com.cn"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //添加label label = new JLabel("歡迎來到腳本之家 www.dbjr.com.cn"); 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); } } }; //添加一個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)建窗體并指定標題 JComboBoxBasicUseDemo frame = new JComboBoxBasicUseDemo(); //關(guān)閉窗體后退出程序 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //自動適配所有控件大小 //frame.pack(); //設置窗體位置在屏幕中央 frame.setLocationRelativeTo(null); //顯示窗體 frame.setVisible(true); } }
本程序的基本功能是,通過選擇不同的item而相應地改變界面中的英文字體(如本例中的www.dbjr.com.cn)。運行效果如下:
下面分析JComboBox的事件響應。程序中使用了3個不同的事件響應函數(shù),他們具有不同的特性。
ActionListener:它在eclipse和netBeans兩個不同的IDE中表現(xiàn)出了不同的效果- -。在eclipse中,每當選中新節(jié)點時被激活;而在netBeans中,選擇新節(jié)點時它總會被激活兩次。
PopupMenuListener:它將選擇節(jié)點的過程細分為3種類型:下拉菜單彈出;下拉菜單合上;下拉菜單取消。當點開下拉菜單,然后放棄選擇時,則下拉菜單取消、下拉菜單合上兩個事件先后被激活。
ItemListener:將節(jié)點的事件分為2種類型:SELECTED和DESELECTED。對于每種事件,均可以調(diào)用getItem()方法來獲取相應節(jié)點。
因此,如果業(yè)務邏輯只關(guān)心最新被選中的節(jié)點,那么使用ItemListener是比較合適的。
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關(guān)文章
SpringBoot集成Swagger使用SpringSecurity控制訪問權(quán)限問題
這篇文章主要介紹了SpringBoot集成Swagger使用SpringSecurity控制訪問權(quán)限問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05Springboot 整合 Java DL4J 實現(xiàn)時尚穿搭推薦系統(tǒng)(實例代碼)
本文介紹了如何使用SpringBoot和JavaDeeplearning4j框架搭建一個時尚穿搭推薦系統(tǒng),文章詳細闡述了系統(tǒng)的技術(shù)架構(gòu)、數(shù)據(jù)集格式、Maven依賴配置、模型訓練和預測代碼實現(xiàn),以及單元測試和預期輸出結(jié)果2024-10-10SpringMVC 參數(shù)綁定之視圖傳參到控制器的實現(xiàn)代碼
這篇文章主要介紹了SpringMVC 參數(shù)綁定之視圖傳參到控制器的相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03