Java Swing组件下拉菜单控件JComboBox用法示例

网友投稿 1110 2023-03-17


Java Swing组件下拉菜单控件JComboBox用法示例

本文实例讲述了java Swing组件下拉菜单控件JComboBox用法。分享给大家供大家参考,具体如下:

JComboBox是Swing中的下拉菜单控件。它永远只能选中一个项目,然而比单选按钮节省空间。如果使用setEditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框。注意,对选项的编辑只会影响当前项,而不会改变列表内容。可以使用addItem方法来添加选项列表,或者使用insertItemAt在任何位置插入选项;然而如果有大量选项需要添加,这种方法是非常笨重的,可以先构造一个DefaultComboBoxModel,使用addElement加载选项,最后在调用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{

pribzguOQxTvate static final long serialVersionUID = -8161981948004677531L;

int DEFAULT_WIDTH = 600;

int DEFAULT_HEIGHT = 400;

private JLabel label;

private JComboBox faceCombo;

private static final int FONTSIZE = 12;

@SuppressWarnings("unused")

public JComboBoxBasicUseDemo(){

setTitle("JComboBoxDemo - jb51.net");

setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

//添加label

label = new JLabel("欢迎来到我们 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 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 source = (JComboBox)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 itbzguOQxTem : %s%n",selectedItem);

}

}

};

//添加一个JComboBox

faceCombo = new JComboBox();

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

//创建窗体并指定标题

JComboBoxBasicUseDemo frame = new JComboBoxBasicUseDemo();

//关闭窗体后退出程序

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//自动适配所有控件大小

//frame.pack();

//设置窗体位置在屏幕中央

frame.setLocationRelativeTo(null);

//显示窗体

frame.setVisible(true);

}

}

本程序的基本功能是,通过选择不同的item而相应地改变界面中的英文字体(如本例中的jb51.net)。运行效果如下:

下面分析JComboBox的事件响应。程序中使用了3个不同的事件响应函数,他们具有不同的特性。

ActionListener:它在eclipse和netBeans两个不同的IbzguOQxTDE中表现出了不同的效果- -。在eclipse中,每当选中新节点时被激活;而在netBeans中,选择新节点时它总会被激活两次。

PopupMenuListener:它将选择节点的http://过程细分为3种类型:下拉菜单弹出;下拉菜单合上;下拉菜单取消。当点开下拉菜单,然后放弃选择时,则下拉菜单取消、下拉菜单合上两个事件先后被激活。

ItemListener:将节点的事件分为2种类型:SELECTED和DESELECTED。对于每种事件,均可以调用getItem()方法来获取相应节点。

因此,如果业务逻辑只关心最新被选中的节点,那么使用ItemListener是比较合适的。

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何集成api网关(nacos集成网关)
下一篇:Java中Volatile关键字详解及代码示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~