Java程序设计(第3版)课件 单元4-任务4 字体设置窗口程序设计_第1页
Java程序设计(第3版)课件 单元4-任务4 字体设置窗口程序设计_第2页
Java程序设计(第3版)课件 单元4-任务4 字体设置窗口程序设计_第3页
Java程序设计(第3版)课件 单元4-任务4 字体设置窗口程序设计_第4页
Java程序设计(第3版)课件 单元4-任务4 字体设置窗口程序设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务四字体设置窗口程序设计单元四:图形用户界面程序设计教学目标知识目标组合框JComboBox;复选框JCheckBox;单选按钮JRadioButton;按钮组ButtonGroup;列表框Jlist。能力目标能会熟练使用JCombox、JCheckBox、JRadioButton、JList选择控件构造复杂用户界面;应用选择事件处理界面事件。教学内容4任务陈述123知识准备任务实施任务拓展任务实训5任务描述:设计一个简单的实现字体设置窗口程序,可根据用户选择设置字体的种类、字号、字形、颜色等属性。运行结果:1.任务陈述在Swing组件中,有一些具有选择功能的组件。将这些组件与if条件语句联合使用,可以设计出许多界面复杂、功能强大的程序选择控件主要包括复选框、单选按钮、列表框、组合框,在Java中使用类JCheckbox、JRadioButton、JList、JComboBox来实现2.知识准备组合框(JComboBox)组合框有可编辑的和不可编辑的两种不同的形式。如果将组合框声明为可编辑的话,用户也可以在文本框中直接输入自己的数据。缺省是不可编辑的组合框。组合框用于在多项选择中选择一项的操作,用户只能选择一个项目。在未选择组合框时,组合框显示为带按钮的一个选项的形式,当对组合框按键或单击时,组合框会打开可列出多项的一个列表,提供给用户选择。由于组合框占用很少的界面空间,所以当项目较多时,一般用它来代替一组单选按钮。组合框事件可以是ActionEvent事件和ItemEvent事件。事件处理方法与其他处理同类事件的方法类似2.知识准备2.知识准备方法名方法功能JComboBox()构造一个缺省模式的组合框JComboBox(Object[]items)通过指定数组构造一个组合框JComboBox(Vectoritems)通过指定向量构造一个组合框JComboBox(ComboBoxModelaModel)通过一个ComBox模式构造一个组合框intgetItemCount()返回组合框中项目的个数intgetSelectedIndex()返回组合框中所选项目的索引ObjectgetSelectedItem()返回组合框中所选项目的值booleanisEditable()检查组合框是否可编辑voidremoveAllItems()删除组合框中所有项目voidremoveItem(ObjectanObject)删除组合框中指定项目voidsetEditable(booleanaFlag)设置组合框是否可编辑voidsetMaximumRowCount(intcount)设置组合框显示的最多行数2.知识准备复选框(JCheckBox)复选框是具有开关或真假状态的按钮单击复选框可将其状态从“开”更改为“关”,或从“关”更改为“开”用户可在多个复选框中选中一个或者多个复选框事件可以是ActionEvent事件和ItemEvent事件。JCheckBox类可实现ItemListener监听器接口的itemStateChanged()方法来处理事件,用addItemListener()方法注册2.知识准备方法名方法功能JCheckBox()创建无文本无图像的初始未选复选框JCheckBox(Iconicon)创建有图像无文本的初始未选复选框

JCheckBox(Iconicon,booleanselected)创建带图像和选择状态但无文本的复选框JCheckBox(Stringtext)创建带文本的初始未选复选框JCheckBox(Stringtext,booleanselected)创建具有指定文本和状态的复选框JCheckBox(Stringtext,Iconicon)创建具有指定文本和图标图像的初始未选复选框按钮JCheckBox(Stringtext,Iconicon,booleanselected)创建具有指定文本、图标图像、选择状态的复选框按钮StringgetLabel()获得复选框标签booleangetState()确定复选框的状态voidsetLabel(Stringlabel)将复选框的标签设置为字符串参数voidsetState(booleanstate)将复选框状态设置为指定状态单选按钮(JRadioButton)单选按钮可以让用户进行选择和取消选择,与复选框不同,每次只能选择单选按钮组中的一个JRadioButton类本身不具有同一时间内只有一个单选按钮对象被选中的性质,也就是说JRadioButton类的每个对象都是独立,不因其他对象状态的改变而改变。必须使用ButtonGroup类将所需的JRadioButton类对象构成一组,使得同一时间内只有一个单选按钮对象被选中。只要通过调用ButtonGroup类对象add()方法,将所有JRadioButton类对象添加到ButtonGroup类对象中即可实现多选一ButtonGroup类只是一个逻辑上的容器,它并不在GUI中表现出来单选按钮的选择事件是ActionEvent类事件2.知识准备2.知识准备方法名方法功能JRadioButton()使用空字符串标签创建一个单选按钮(没有图像、未选定)JRadioButton(Iconicon)使用图标创建一个单选按钮(没有文字、未选定)JRadioButton(Iconicon,booleanselected)使用图标创建一个指定状态的单选按钮(没有文字)JRadioButton(Stringtext)使用字符串创建一个单选按钮(未选定)JRadioButton(Stringtext,booleanselected)使用字符串创建一个单选按钮JRadioButton(Stringtext,Iconicon)使用字符串和图标创建一个单选按钮(未选定)JRadioButton(Stringtext,Iconicon,booleanselected)使用字符串创建一个单选按钮列表框(JList)列表框是允许用户从一个列表中选择一项或多项的组件。显示一个数组和向量的表是很容易的。列表框使用户易于操作大量的选项。列表框的所有项目都是可见的,如果选项很多,超出了列表框可见区的范围,则列表框的旁边会有一个滚动条。列表框事件可以是ListSelectionEvent事件和ItemEvent事件2.知识准备2.知识准备方法名方法功能JList()构造一个空的滚动列表JList(Object[]listData)通过一个指定对象数组构造一个列表JList(ListModeldataModel)通过列表元素构造一个列表JList(VectorlistData)通过一个向量构造一个列表,是默认的选择方式intgetSelectedIndex()获取列表中选中项的索引int[]getSelectedIndexes()获取列表中选中的索引数组ObjectgetSelectedValue()获取列表中选择的值Object[]getSelectedValues()获取列表中选择的多个值voidsetSelectionMode(intselectionMode)设置选择模式voidsetVisibleRowCount(intvisibleRowCount)设置不带滚动条时显示的行数选择事件(ItemEvent)在JavaGUI中,当进行选择性的操作,如单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成选项事件。选中其中一项或取消其中一项都会触发相应的选项事件。触发选项事件的组件比较多,如JComboBox、JCheckBox、JRadioButton组件。用户在下拉列表、复选框和单选按钮中,选择一项或取消一项,都会触发选项事件ItemEvent。当用户单击某个JRadioButton类对象时,可以产生一个ActionEven和一个或者两个ItemEvent(一个来自被选中的对象,另一个来自之前被选中现在未选中的对象)2.知识准备选择事件(ItemEvent)JRadioButton类可以同时响应ItemEvent和ActionEvent大多数的情况下,只需要处理被用户单击选中的对象,所以使用ActionEvent来处理JRadioButton类对象的事件当用户单击某个JCheckBox类对象时,也可以产生一个ItemEvent和一个ActionEvent大多数的情况下,需要判断JCheckBox类对象是否被选中,所以经常使用ItemEvent来处理JCheckBox类的事件ItemEvent类的处理过程:当用户改变一个组件的状态时,会产生一个或多个ItemEven类事件。2.知识准备选择事件(ItemEvent)处理步骤使用“importjava.awt.event.*;”语句导入java.awt.event包中的所有类给程序的主类添加ItemListener接口将需要监听的组件注册,其格式为:对象名.addItemListener(this);在itemStateChanged()方法中编写具体处理该事件的方法,其格式为:

publicvoiditemStateChanged(ItemEvente){}2.知识准备在itemStateChanged()方法中,经常使用下面3种方法来判断对象当前的状态:方法一:getItem()方法返回因为事件的产生而改变状态的对象,类型为Object。通过if语句将getItem()依次与所有能改变状态的对象进行比较,就可以确定用户到底是哪一个对象因为事件的产生而改变了状态。2.知识准备方法二:

getItemSelectable()方法返回产生事件的对象,其返回类型为Object。通过if语句将getItemSelectable()依次与所有能产生事件的对象进行比较,就可以确定用户单击的是哪一个对象。getItemSelectable()方法的作用与getSource()方法的作用完全一样。方法三:

getStateChange()方法返回产生事件对象的当前状态,其返回值有两个,ItemEventSELECTED和ItemEvent.DESELECTED。ItemEvent.SELECTED表示对象当前为选中,ItemEvent.DESELECTED表示对象当前未选中。2.知识准备界面中的字体颜色单选项和字形复选框分别通过JRadioButton和JCheckBox类进行创建并实现,字号选择通过JList类实现,字体选择通过JComboBox类实现。

布局通过盒式布局嵌套实现,两个水平的盒子放在一个垂直的盒子里。上面水平的盒子里放JComboBox、JList、JCheckBox、JRadioButton对象,下面水平盒子里放文本区JTextArea对象和按钮对象。同时实现ItemListener和ActionListener接口,处理按钮点击和选择控件的事件。定义类FontSet继承JFrame实现ItemListener,ActionListener接口通过JComboBox、JCheckBox、JradioButton等对象实现GUI界面设计为组件添加监听器为ItemListener和ActionListener接口添加事件处理代码编写main方法测试程序3.任务实施 3.任务实施导入所用的包:importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;定义窗口类:publicclassFontSetextendsJFrameimplementsItemListener,ActionListener{} 3.任务实施定义字体颜色单选按钮对象和按钮组对象:

JRadioButtonjrbRed=newJRadioButton("红色",true); JRadioButtonjrbGreen=newJRadioButton("绿色"); JRadioButtonjrbBlue=newJRadioButton("蓝色");

privateButtonGroupbg=newButtonGroup();定义字形复选按钮对象:

JCheckBoxjcb1=newJCheckBox("加粗"); JCheckBoxjcb2=newJCheckBox("倾斜");

3.任务实施定义字体下拉列表对象、字号列表对象:JComboBoxlistFont;JListlistSize;JTextAreataDemo; //显示样例文字的文本区JButtonbtnExit,btnEdit; //退出和编辑按钮定义构造方法FontSet()GraphicsEnvironmentg=/*获取所有可用字体*/GraphicsEnvironment.getLocalGraphicsEnvironment();StringfontName[]=g.getAvailableFontFamilyNames(); 3.任务实施添加字体选择下拉列表:

BoxboxV1=Box.createVerticalBox(); boxV1.add(newJLabel("请选择字体")); listFont=newJComboBox(fontName); boxV1.add(newJScrollPane(listFont)); boxV1.add(Box.createVerticalStrut(155)); 3.任务实施添加字号选择列表:

BoxboxV2=Box.createVerticalBox(); boxV2.add(newJLabel("请选择字号")); StringstrSize[]=newString[30]; for(inti=0;i<30;i++){ strSize[i]=""+(i+16); } listSize=newJList(strSize); boxV2.add(newJScrollPane(listSize)); 3.任务实施添加字形选择复选按钮:

BoxboxV3=Box.createVerticalBox(); boxV3.add(newJLabel("请选择字形")); boxV3.add(jcb1); boxV3.add(jcb2); boxV3.add(Box.createVerticalGlue()); 3.任务实施添加颜色选择单选按钮组:

BoxboxV4=Box.createVerticalBox(); boxV4.add(newJLabel("请选择字色")); boxV4.add(jrbRed); boxV4.add(jrbGreen); boxV4.add(jrbBlue); boxV4.add(Box.createVerticalGlue()); bg.add(jrbRed);bg.add(jrbGreen);bg.add(jrbBlue); 3.任务实施将4个垂直盒子放入一个水平盒子:

BoxboxH1=Box.createHorizontalBox(); boxH1.add(boxV1); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV2); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV3); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV4); 3.任务实施将文本区对象放入第二个水平盒子:

BoxboxH2=Box.createHorizontalBox(); taDemo=newJTextArea("这是字体设置的测试文字",5,20); boxH2.add(taDemo); 3.任务实施将两个按钮放入垂直盒子后再放入水平盒子二:BoxboxV5=Box.createVerticalBox(); btnExit=newJButton("退出"); btnEdit=newJButton("编辑"); boxV5.add(btnExit); boxV5.add(btnEdit); boxH2.add(boxV5); btnExit.addActionListener(this); btnEdit.addActionListener(this); 3.任务实施将两个水平盒子放入一个垂直盒子再添加到窗口中去:BoxbaseBox=Box.createVerticalBox();baseBox.add(boxH1);baseBox.add(boxH2);baseBox.add(boxH2); Containercon=getContentPane();con.setLayout(newFlowLayout());con.add(baseBox); 3.任务实施设置窗口的标题、大小位置、可见性和关闭后的操作:setTitle("字体设置器");setBounds(150,150,550,380);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

3.任务实施按钮点击处理actionPerformed方法:如果点击退出按钮,窗口关闭if(e.getSource()==btnExit){ dispose();}如果选择编辑按钮,获取用户选择的字体、字形elseif(e.getSource()==btnEdit){ intstyle=Font.PLAIN; if(jcb1.isSelected()) style|=Font.BOLD; if(jcb2.isSelected()) style|=Font.ITALIC;

3.任务实施按钮点击处理actionPerformed方法:获取用户选择的颜色if(jrbRed.isSelected())taDemo.setForeground(Color.RED);if(jrbGreen.isSelected())taDemo.setForeground(Color.GREEN);if(jrbBlue.isSelected())taDemo.setForeground(Color.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论