标签:
JComboBox是Swing中的下拉菜单控件。它永远只能选中一个项目,然而比单选按钮节省空间。如果使用setEditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框。注意,对选项的编辑只会影响当前项,而不会改变列表内容。可以使用addItem方法来添加选项列表,或者使用insertItemAt在任何位置插入选项;然而如果有大量选项需要添加,这种方法是非常笨重的,可以先构造一个DefaultComboBoxModel,使用addElement加载选项,最后在调用JComboBox的setModel方法。
常用方法如下:
示例代码:
JComboBoxDemo.java
import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; public class JComboBoxDemo extends JFrame{ /** * source code from 《java核心技术 卷1 基础知识》 P336 */ 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; public JComboBoxDemo(){ setTitle("JComboBoxDemo"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //添加label label = new JLabel("The quick brown fox jumps over the lazy dog."); label.setFont(new Font("Serif",Font.PLAIN, FONTSIZE)); add(label, BorderLayout.CENTER); //构造一个监听器,响应事件 ActionListener actionListener = new ActionListener(){ public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JComboBox){ JComboBox<String> comboBox = (JComboBox)e.getSource(); String fontName = comboBox.getSelectedItem().toString(); label.setFont(new Font(fontName, Font.PLAIN, FONTSIZE)); } } }; //添加一个JComboBox faceCombo = new JComboBox<String>();
faceCombo.setEditable(true); faceCombo.addActionListener(actionListener); 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 //创建窗体并指定标题 JComboBoxDemo frame = new JComboBoxDemo(); //关闭窗体后退出程序 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //自动适配所有控件大小 //frame.pack(); //设置窗体位置在屏幕中央 frame.setLocationRelativeTo(null); //显示窗体 frame.setVisible(true); } }
运行效果:
标签:
原文地址:http://www.cnblogs.com/pzy4447/p/4641463.html