Java第二次实验
组合框(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); // 创建一个面板,把三个下拉框,按钮放进去,面板默认是 FlowLayout JPanel 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); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } }