组合框(JComboBox)的使用方法:
组合框(JComboBox)是文本框和列表的组合,可以在文本框中输入选项,也可以单击下拉按钮从显示的列表中进行选择。组合框的常用构造方法:JComboBox():建立一个没有选项的JComboBox对象。JComboBox(JComboBoxModel aModel):用数据模型建立一个JComboBox对象。JComboBox(Object[]items):利用数组对象建立一个JComboBox对象。组合框的其他常用方法有以下几个:
- addItem(Object obj):向组合框加选项。
- getItemCount():获取组合框的条目总数。
- removeItem(Object ob):删除指定选项。
- removeItemAt(int index):删除指定索引的选项。
- insertItemAt(Object ob,int index):在指定的索引处插入选项。
- getSelectedIndex():获取所选项的索引值(从0开始)。
- getSelectedItem():获得所选项的内容。
- setEditable(boolean b):设为可编辑。组合框的默认状态是不可编辑的,需要调用本方法设定为可编辑,才能响应选择输入事件。
在JComboBox对象上发生事件分为两类。一是用户选定项目,事件响应程序获取用户所选的项目。二是用户输入项目后按回车键,事件响应程序读取用户的输入。第一类事件的接口是ItemListener;第二类事件是输入事件,接口是ActionListener。
import java.awt.BorderLayout;import java.awt.Container;import java.awt.Font;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;public class FontTest extends JFrame implements ActionListener {public static void main(String[] args) {JFrame frame=new FontTest();frame.setSize(800, 200);frame.setVisible(true);}public static Font font;private JButton btnGo;// 主类直接继承了 JFrame,实现了 ActionListener 接口private static final long serialVersionUID = -2344998755780835481L;// 获取当前的环境变量private java.awt.GraphicsEnvironment env = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();// 字体名字,风格,大小的下拉框private JComboBox cbFontName, cbFontStyle, cbFontHeight;// 文本编辑框private JTextArea taEditor;public FontTest() {super("字体"); // 继承父类的构造函数this.setSize(500, 280); // 设置窗口大小this.setLocationRelativeTo(null); // 窗口屏幕居中Image img = new ImageIcon("src/Icon/字体.jpg").getImage();this.setIconImage(img);Container container = this.getContentPane();// 获取系统中所有可用字体的名字,并加入下拉框String[] fontNames = env.getAvailableFontFamilyNames();cbFontName = new JComboBox(fontNames);// 将三种字体风格加入下拉框String[] fontStyles = { "普通", "粗体", "斜体" };cbFontStyle = new JComboBox(fontStyles);// 将 12~21 字号加入下拉框String[] fontHeights = new String[10];for (int i = 12; i < 22; i++)fontHeights[i - 12] = new String(Integer.toString(i));cbFontHeight = new JComboBox(fontHeights);// 创建执行按钮,并加入监听btnGo = new JButton("应用字体");btnGo.setActionCommand("Apply Font");btnGo.addActionListener(this);// 创建一个面板,把三个下拉框,按钮放进去,面板默认是 FlowLayoutJPanel paneTop = new JPanel();paneTop.add(cbFontName);paneTop.add(cbFontStyle);paneTop.add(cbFontHeight);paneTop.add(btnGo);// 创建文本框,并放入滚动条taEditor = new JTextArea();taEditor.append("好好学习Java");JScrollPane sp = new JScrollPane(taEditor);// 将各组件加入窗口container.add(paneTop, BorderLayout.PAGE_START);container.add(sp, BorderLayout.CENTER);}public void actionPerformed1(ActionEvent event) {if (event.getActionCommand().equals("Apply Font")) { // 判断是否来自按钮的动作// 获取字体名字String fontName = cbFontName.getSelectedItem().toString();// 获取字体风格,默认是“普通”int fontStyle;switch (cbFontStyle.getSelectedIndex()) {case 0:fontStyle = Font.PLAIN;break;case 1:fontStyle = Font.BOLD;break;case 2:fontStyle = Font.ITALIC;break;default:fontStyle = Font.PLAIN;break;}// 获取字体大小int fontHeight = Integer.parseInt(cbFontHeight.getSelectedItem().toString());// 创建一个新字体font = new Font(fontName, fontStyle, fontHeight);// 文本框应用新字体taEditor.setFont(font);}}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}}