Java应用程序设计SwingGUI.ppt

上传人:本田雅阁 文档编号:2892962 上传时间:2019-06-02 格式:PPT 页数:49 大小:124.02KB
返回 下载 相关 举报
Java应用程序设计SwingGUI.ppt_第1页
第1页 / 共49页
Java应用程序设计SwingGUI.ppt_第2页
第2页 / 共49页
Java应用程序设计SwingGUI.ppt_第3页
第3页 / 共49页
Java应用程序设计SwingGUI.ppt_第4页
第4页 / 共49页
Java应用程序设计SwingGUI.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《Java应用程序设计SwingGUI.ppt》由会员分享,可在线阅读,更多相关《Java应用程序设计SwingGUI.ppt(49页珍藏版)》请在三一文库上搜索。

1、Java应用程序设计,第8章 Swing组件 参考教材:Java实用教程,肖磊,人民邮电出版社,8.1 Swing概述,Swing是基于AWT开发的,AWT的组件全部是重量级的,而相应的组件在Swing中全部都改成轻量级的; Swing组件的跨平台性比较好,而且增加了一些组件; Swing是JFC(Java Foundation Class)的一部分,其余5个部分是:AWT,辅助功能API,2D API和对拖放功能增强的支持;,Swing中的每一个轻量级组件必须出现在重量级容器中,所以Swing的小应用程序JApplet、窗体、窗口、对话框都必须是重量组件,以提供绘制Swing轻量级组件的窗口

2、; Swing组件由40多个,一部分为AWT组件的替代品,另一部分是提供给用户开发图形用户界面增添的组件;,8.1 Swing概述,8.2 创建窗体,利用JFrame类来创建窗体; setTitle(String title); /设置窗体标题; setBounds(int x, int y, int width, int height); /设置窗体的位置和大小 setDefaultCloseOperation(int operation);/设置关闭按钮的动作 operation为JFrame类中用来设置关闭按钮动作的静态常量,见下页表;,8.2 创建窗体,8.2 创建窗体,在利用JFra

3、me类创建窗体时,必须在最后通过该类的setVisible(true);将该窗体设置为可见,默认为不可见; 在setVisible(true)之后的对窗体设置将无效; 例子:MyFirstFrame.java,8.3 常用组件,8.3.1 JLable标签组件 通过JLable类创建标签组件; setText(String text); /设置标签设置的文本 setFont(Font font); /设置文本字体及大小; setHorizontalAlignment(int alignment); /设置文本的显示位置,该参数可从下表中选择,8.3.1 JLabel标签的创建,JLabel类用

4、于设置标签内容水平位置的常量,setIcon(Icon icon); /设置标签中可显示的图片 setHorizontalTextPosition(int textPosition); /设置文字相对于图像在水平方向上的位置,可从下表中选择,例子: LabelDemo.java,8.3.2 JButton组件,通过JButton类来创建按钮组件; setText(String text); /设置按钮的标签文本 setIcon(Icon defaultIcon); /设置按钮在默认状态下显示的图片; setRolloverIcon(Icon rolloverIcon); /设置当光标移到按钮上

5、时显示的图片; setPressedIcon(Icon pressedIcon); /设置按钮被按下时显示的图片;,8.3.2 JButton组件,setMargin(Insets m); /将按钮边框和标签四周的间隔均设置为0; Insets类的构造方法: Insets(int top, int left, int bottom, int right); /4个整形参数依次为:标签上方,左侧,下方和右侧的间隔; setContentAreaFilled(boolean b); /设置为不绘制按钮的内容区域,即设置按钮的背景为透明,当参数为false时为不绘制,默认为true; setBord

6、erPainted(boolean b); /设置不绘制按钮的边框,默认为true,表示绘制;,8.3.3 JRadioButton组件,JRadioButton组件实现一个单选按钮,可以单独使用,也可以和ButtonGroup类联合使用; 单独使用:该按钮可以被选定和取消; 与ButtonGroup联合使用:用户只能选定按钮组中的一个按钮,其取消选定的操作由ButtonGroup类自动完成;,8.3.3 JRadioButton(ButtonGroup),ButtonGroup类用来创建一个按钮组,其作用负责维护本组按钮的“开启”状态,每个组中只能有一个按钮处于“开启”状态; 经常与JRad

7、ioButton, JRadioButtonMenuItem, JToggleButton类型的按钮一起使用; ButtonGroup类提供的常用方法(下页表),ButtonGroup类提供的常用方法,8.3.3 JRadioButton(常用方法),setText(String text); /设置单选按钮文本; setSelected(boolean b); /设置按钮的状态,true为选中,默认为false; 例子:RadioButtonDemo.java,8.3.4 JCheckBox组件,JCheckBox为一复选框,用户可以同时选定多个; setText(String text);

8、 /设置复选框的文本 setSelected(boolean b); /设置该按钮的选中状态,true表示选中,默认为false; 例子:CheckBoxDemo.java,8.3.5 JComboBox组件(选择框),JComboBox组件实现一个选择框,用户可从中选取一项(只能一项);若设置为可编辑状态,则可以在选择框中输入相应的值; 创建JComboBox组件的方法 (1)JComboBox(Object items)构造函数 String idCards=“身份证”,”士兵证”,”驾驶证”; JComboxBox idCardsComboBox= new JComboxBox(idCa

9、rds);,8.3.5 JComboBox组件,(2)setModel(ComboBoxModel aModel)方法 String idCards=“身份证”,”士兵证”,”驾驶证”; JComboBox icb =new JComboBox(); icb.setModel(new DefaultComboBoxModel(idCards);,(3)addItem(Object item);和insertItemAt(Object item, int index); JComboBox icb = new JComboBox(); icb.addItem(“士兵证”); icb.addIte

10、m(“驾驶证”); icb.insertItemAt(“身份证”,0);,8.3.5 JComboBox组件,8.3.5 JComboBox组件,JComboBox类提供的常用方法,例子:ComboBoxDemo.java,8.3.6 JList组件,与JComboBox类似,不同之处是可以多选; 初始化列表项 Integer months=1,2,3,4,5,6,7,8,9,10,11,12; JList list=new JList(months); JList列表框的3种选取模式,通过ListSelectionModel类中的静态常量进行指定;,8.3.6 JList组件,JList提供

11、的常用方法 setSelectedIndex(int index):选中指定索引的一个选项; setSelectedIndices(int indices); 选中指定索引的一组选项; setSelectionBackground(Color selectionBackgroud): 指定被选项的背景色; setSelectionForeground(Color selectionForeground); 指定被选项的前景色; getSelectedIndices(): 以int形式获得所有被选项的索引值; getSelectedValues(): 以Object形式获得所有被选项的内容;,8

12、.3.6 JList组件,JList提供的常用方法 clearSelection(): 取消所有被选中的项; isSelectionEmpty(): 是否有被选中的项,若有,则返回true; isSelectedIndex(int index); 指定的索引是否被选中,若选中,则返回true; ensureIndexIsVisible(int index); 使指定项在选择窗口中可见; setFixedCellHeight(int height); 设置窗口中每个选项的高度; setVisibleRowCount(int count); 设置在选择窗口中最多可见的选项数;,8.3.6 JLis

13、t组件,JList提供的常用方法 getPreferredScrollableViewportSize(); 获得使指定个数选项可见需要的窗口高度; setSelectionModel(int selectModel); 设置选择框的选取模式; 例子:ListDemo.java,8.3.7 JTextField组件,创建一个单行文本框; 设置默认文本: JTextField tf=new JTextField(“请输入姓名”); JTextField类提供的常用方法 setText(String text); /设置文本框的文本 getPreferredSize(); /获得文本框的首选大小,

14、返回Dimensions类型的对象; scrollRectToVisible(Rectangle r); /向左或向右滚动文本框中的内容; setColumns(int columns); /设置文本框最多可显示的列数;,setFont(Font f); /设置文本框的字体; setScrollOffset(int scrollOffset); /设置文本框的移动偏移量,以像素为单位; setHorizontalAlignment(int alignment); /设置文本框的内容水平对齐方式;由下表的常量指定;,例子:TextFieldDemo.java,8.3.8 JPasswordFie

15、ld组件,创建一个密码框,不显示用户输入的内容,只显示一个特定的字符; JPasswordField类提供的常用方法 setEchoChar(char c); /设置回显字符,默认“.“ getEchoChar(); /返回char型的回显字符 echoCharIsSet(); /查看是否设置了回显字符,若已经设置,返回true,否则为false; getPassword(); /获得用户输入的文本信息,返回值为char型的数组; 例子:PasswordFieldDemo.java,8.3.9 JTextArea组件,创建一多行文本域,可以进行编辑; JTextArea类提供的常用方法; ap

16、pend(String str); /将指定文本添加到文档末尾; insert(String str, int pos); /将指定文本插入到指定位置; replaceRange(String str, int start, int end); /将新文本替换指定位置开始到指定位置结束的文本; getColumnWidth(); /获取列的宽度; getLineCount(); /获取文本区包含的行数; getPreferredSize(); /返回文本区的首选大小; getRows(); /返回文本域的行数; setLineWrap(boolean b); /是否自动换行,默认为false

17、例子:TextAreaDemo.java,8.4 常用的布局管理器,布局管理器负责管理组件在容器中的排列方式; 为了支持Java的跨平台性,引入了布局管理器; 布局管理器可以用setLayout()方法进行设定; getContentPane().setLayout(LayoutManager mgr); 若不使用布局管理器,则将参数设置为null; getContentPane().setLayout(null); 若不使用布局管理器,则必须使用直接定位的方式排列所有组件;缺点是不能保证在其他平台上能够正确显示;,8.4.1 不使用布局管理器(略),8.4.2 FlowLayout布局管理器

18、 FlowLayout类实现的布局管理器称为流布局管理器; 排列方式:首先在一行上排列组件,若没有足够的空间,则回行显示;当容器大小发生变化时,按此规则重新排列组件; 流布局管理器默认居中显示组件,可通过setAlignment()方法进行设定; setAlignment(int align); align可选值:FlowLayout.LEFT FlowLayout.CENTER FlowLayout.RIGHT,FlowLayout布局管理器默认组件间的距离(水平、垂直)为5像素;可用setHgap(int hgap); 和setVgap(int vgap);进行设置 例子: FlowLay

19、outDemo.java,8.4.3 BorderLayout布局管理器,即边界布局管理器; 布局方式:将窗口划分为5个部分;,边界布局管理器为JFrame窗体的默认布局管理器; 若容器采用了边界布局管理器,在将组件添加到容器时,必须指定其显示位置,指定方法如下: add(Component comp, Object constraints); comp:被添加的组件; constraints: 显示位置,可选值为BorderLayout的常量值:BorderLayout.CENTER; BorderLayout.NORTH; BorderLayout.SOUTH; BorderLayout.

20、WEST; BorderLayout.EAST;,BorderLayout布局管理器默认组件间的水平、垂直距离均为0像素,可通过setHgap(int hgap);和setVgap(int vgap)进行设定; 例子:BorderLayoutDemo.java,8.4.4 GridLayout布局管理器,即网格布局管理器; 布局方式:将容器按照用户的设置平均分成若干网格,可通过GridLayout()构造函数进行指定; GridLayout(int rows, int cols); 说明: rows0 & cols=0: 容器先按行进行排列,当组件个数大于rows时,再增加一列; rows=0

21、 & cols0: 容器先按列进行排列,当组件数大于cols时,再增加一行; rows0 & cols0: 容器先按行进行排列,当组件个数大于rows时,再增加一列; rows0 & cols0 & 组件个数大于rows*cols时:再增加一列;,GridLayout布局管理器默认组件间水平、垂直距离均为0像素,可通过setHgap(int)和setVgap(int)进行设定; 例子:GridLayoutDemo.java,8.5 常用的面板,面板可以添加到JFrame窗体中; 子面板可以添加到上一层面板中,可以实现对所有组件进行分层管理,不同关系的组件采用不同的布局管理方式,使界面更美观;,

22、8.5.1 JPanel面板,JPanel默认采用FlowLayout布局管理方式; 例子:PanelDemo.java,8.5.2 JScrollPane面板,为组件提供带滚动条的面板; JScrollPane类提供的常用方法 setViewportView(Component view); /设置在面板中显示的组件; setHorizontalScrollBarPolicy(int); /设置水平滚动条的显示方式; setVerticalScrollBarPolicy(int); /设置垂直滚动条的显示方式; setWheelScrollingEnabled(false); /设置滚动条是

23、否支持鼠标滚轮;,JScrollPane类提供的滚动条的显示方式(静态常量) HORIZONTAL_SCROLLBAR_AS_NEEDED: 需要时显示; HORIZONTAL_SCROLLBAR_NEVER: 水平滚动条永不显示; HORIZONTAL_SCROLLBAR_ALWAYS: 水平滚动条一直显示; VERTICAL_SCROLLBAR_AS_NEEDED: 需要时显示; VERTICAL_SCROLLBAR_NEVER: 垂直滚动条永不显示; VERTICAL_SCROLLBAR_ALWAYS: 垂直滚动条一直显示;,例子:ScrollPaneDemo.java 8.6 常用事件

24、处理 8.6.1 动作事件处理 动作事件由ActionEvent类捕获,最常用的是当单击按钮后发出的动作事件,可通过实现ActionListener接口处理相应的动作事件; ActionListener接口的原型如下: public interface ActionListener extends EventListener public void actionPerformed(ActionEvent e); ,ActionEvent类提供的常用方法,getSource(): 获取触发此事件的对象,返回类型为Object; getActionCommand(): 获取与当前动作相关的命令字符

25、串,返回类型为String; 例子:ActionEventDemo.java,8.6.2 焦点事件处理,焦点事件由FocusEvent类捕获,对于焦点事件可以通过实现FocusListener接口处理相应的事件; FocusListener接口原型: public interface FocusListener extends EventListener public void focusGained(FocusEvent e); public void focusLost(FocusEvent e); ,8.6.2 焦点事件处理,FocusEvent类比较常用的方法 getSource():

26、获取触发事件的目标对象; 例子:FocusEventDemo.java 8.6.3 鼠标事件处理 MouseEvent类捕获鼠标事件,可通过MouseListener接口处理鼠标事件; MouseListener有5个抽象方法(下页),public interface MouseListener extends EventListener /鼠标进入时触发 public void mouseEntered(MouseEvent e); /鼠标按下时触发 public void mousePressed(MouseEvent e); /鼠标释放时触发 public void mouseRelea

27、sed(MouseEvent e); /鼠标单击时触发 public void mouseClicked(MouseEvent e); /鼠标移出时触发 public void mouseExited(MouseEvent e); ,MouseEvent类提供的常用方法 getSource(): 返回触发此事件的对象(事件源),返回值为Object类型; getButton(): 获取鼠标按下,释放,单击时的键;可由MouseEvent的静态常量表示; getClickCount(): 获取单击的按键次数; 表8-17 MouseEvent类中代表鼠标按键的静态常量,例子:MouseEvent

28、Demo.java,8.6.4 键盘事件处理,键盘事件由KeyEvent类捕获,可以通过KeyListener接口处理相应的键盘事件; KeyListener定义了3个抽象方法,分别为: public interface KeyListener extends EventListener /发生击键动作时触发 public void keyTyped(KeyEvent e); /键按下时触发 public void keyPressed(KeyEvent e); /键释放时触发 public void keyReleased(KeyEvent e); ,KeyEvent类提供的常用方法 get

29、Source(): 获取触发此事件的对象(事件源,返回值为Object类型; getKeyCode(): 与此事件相关联的键的整数; getKeyChar(): 触发事件键的字符; getKeyText(int keyCode): 用来获取描述keyCode的标签,如A, F1, HOME等; isActionKey(): 查看事件中的键是否为动作键; isControlDown(): 查看事件中Ctrl键是否按下,若按下,则返回true; isAltDown(): 查看事件中Alt键是否被按下,若按下,则返回true; isShiftDown(): 查看事件中Shift键是否被按下,若按下,则返回true;,KeyEvent类中以“VK_“开头的静态常量代表各个键的keyCode,可以通过这些静态常量判断事件中的按键,以及获得按键的标签; 例子:KeyEventDemo.java,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1