Java应用程序设计SwingGUI_第1页
Java应用程序设计SwingGUI_第2页
Java应用程序设计SwingGUI_第3页
Java应用程序设计SwingGUI_第4页
Java应用程序设计SwingGUI_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

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

2、绘制Swing轻量级组件的窗口;Swing组件由40多个,一部分为AWT组件的替代品,另一部分是提供给用户开发图形用户界面增添的组件;8.1 Swing概述Swing中的每一个轻量级组件必须出现在重量级容器中,所以S8.2 创建窗体利用JFrame类来创建窗体;setTitle(String title); /设置窗体标题;setBounds(int x, int y, int width, int height); /设置窗体的位置和大小setDefaultCloseOperation(int operation);/设置关闭按钮的动作operation为JFrame类中用来设置关闭按钮动作

3、的静态常量,见下页表;8.2 创建窗体利用JFrame类来创建窗体;8.2 创建窗体静态常量常量值执行操作HIDE_ON_CLOSE1隐藏窗口,默认DO_NOTHING_ON_CLOSE0不执行任何操作DISPOSE_ON_CLOSE2移除窗口EXIT_ON_CLOSE3退出窗口8.2 创建窗体静态常量常量值执行操作HIDE_ON_CLO8.2 创建窗体在利用JFrame类创建窗体时,必须在最后通过该类的setVisible(true);将该窗体设置为可见,默认为不可见;在setVisible(true)之后的对窗体设置将无效;例子:MyFirstFrame.java8.2 创建窗体在利用JF

4、rame类创建窗体时,必须在最后通8.3 常用组件8.3.1 JLable标签组件通过JLable类创建标签组件;setText(String text); /设置标签设置的文本setFont(Font font); /设置文本字体及大小;setHorizontalAlignment(int alignment); /设置文本的显示位置,该参数可从下表中选择8.3 常用组件8.3.1 JLable标签组件8.3.1 JLabel标签的创建JLabel类用于设置标签内容水平位置的常量静态常量常量值水平位置LEFT2靠左CENTER0具中RIGHT4靠右setIcon(Icon icon); /设

5、置标签中可显示的图片setHorizontalTextPosition(int textPosition); /设置文字相对于图像在水平方向上的位置,可从下表中选择8.3.1 JLabel标签的创建JLabel类用于设置标签静态常量常量值水平方向位置TOP1文字在图片上方CENTER0文字与图片在垂直文向上重叠显示BOTTOM3文字显示在图片下方例子: LabelDemo.java静态常量常量值水平方向位置TOP1文字在图片上方CENTER8.3.2 JButton组件通过JButton类来创建按钮组件;setText(String text); /设置按钮的标签文本setIcon(Icon

6、defaultIcon); /设置按钮在默认状态下显示的图片;setRolloverIcon(Icon rolloverIcon); /设置当光标移到按钮上时显示的图片;setPressedIcon(Icon pressedIcon); /设置按钮被按下时显示的图片;8.3.2 JButton组件通过JButton类来创建按钮8.3.2 JButton组件setMargin(Insets m); /将按钮边框和标签四周的间隔均设置为0;Insets类的构造方法:Insets(int top, int left, int bottom, int right);/4个整形参数依次为:标签上方,左侧

7、,下方和右侧的间隔;setContentAreaFilled(boolean b); /设置为不绘制按钮的内容区域,即设置按钮的背景为透明,当参数为false时为不绘制,默认为true;setBorderPainted(boolean b); /设置不绘制按钮的边框,默认为true,表示绘制;8.3.2 JButton组件setMargin(Inset8.3.3 JRadioButton组件JRadioButton组件实现一个单选按钮,可以单独使用,也可以和ButtonGroup类联合使用;单独使用:该按钮可以被选定和取消;与ButtonGroup联合使用:用户只能选定按钮组中的一个按钮,其取

8、消选定的操作由ButtonGroup类自动完成;8.3.3 JRadioButton组件JRadioButt8.3.3 JRadioButton(ButtonGroup)ButtonGroup类用来创建一个按钮组,其作用负责维护本组按钮的“开启”状态,每个组中只能有一个按钮处于“开启”状态;经常与JRadioButton, JRadioButtonMenuItem, JToggleButton类型的按钮一起使用;ButtonGroup类提供的常用方法(下页表)8.3.3 JRadioButton(ButtonGroup方法功能add(AbstractButton b)添加按钮到按钮组中remo

9、ve(AbstractButton b)移除按钮组中的按钮getButtonCount()返回按钮组中的按钮个数getElements()返回一个Enumeration对象,可以遍历按钮组中包含的所有按钮ButtonGroup类提供的常用方法方法功能add(AbstractButton b)添加按钮到8.3.3 JRadioButton(常用方法)setText(String text); /设置单选按钮文本;setSelected(boolean b); /设置按钮的状态,true为选中,默认为false;例子:RadioButtonDemo.java8.3.3 JRadioButton(常

10、用方法)setTex8.3.4 JCheckBox组件JCheckBox为一复选框,用户可以同时选定多个;setText(String text); /设置复选框的文本setSelected(boolean b); /设置该按钮的选中状态,true表示选中,默认为false;例子:CheckBoxDemo.java8.3.4 JCheckBox组件JCheckBox为一复选8.3.5 JComboBox组件(选择框)JComboBox组件实现一个选择框,用户可从中选取一项(只能一项);若设置为可编辑状态,则可以在选择框中输入相应的值;创建JComboBox组件的方法(1)JComboBox(O

11、bject items)构造函数String idCards=“身份证”,”士兵证”,”驾驶证”;JComboxBox idCardsComboBox=new JComboxBox(idCards);8.3.5 JComboBox组件(选择框)JComboBo8.3.5 JComboBox组件(2)setModel(ComboBoxModel aModel)方法String idCards=“身份证”,”士兵证”,”驾驶证”;JComboBox icb =new JComboBox();icb.setModel(new DefaultComboBoxModel(idCards);8.3.5 J

12、ComboBox组件(2)setModel(C(3)addItem(Object item);和insertItemAt(Object item, int index);JComboBox icb = new JComboBox();icb.addItem(“士兵证”);icb.addItem(“驾驶证”);icb.insertItemAt(“身份证”,0);8.3.5 JComboBox组件(3)addItem(Object item);和inser8.3.5 JComboBox组件方法功能addItem(Object item);添加选项至列表尾部insertItemAt(Object i

13、tem, int index);在指定位置插入选项removeItem(Object item);移除指定选项removeItemAt(int index);移除指定索引位置上的选项removeAllItems()移除所有选项setSelectedItem(Object item);指定某选项为默认选项setSelectedIndex(int index);指定特定索引位置的选项为默认setMaximumRowCount(int count)选择框弹出时最多显示的行数,默认为8行setEditable(boolean isEdit);选择框可否编辑,默认falseJComboBox类提供的常用

14、方法例子:ComboBoxDemo.java8.3.5 JComboBox组件方法功能addItem(O8.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类中的静态常量进行指定;常量常量值作用SINGLE_SELECTION0只允许单选SINGLE_INTERVAL_SELECTION1只允许连续多选MULTIPLE_INTERVAL_SELECTI

15、ON2可多选,可连续/间隔8.3.6 JList组件与JComboBox类似,不同之处8.3.6 JList组件JList提供的常用方法setSelectedIndex(int index):选中指定索引的一个选项;setSelectedIndices(int indices); 选中指定索引的一组选项;setSelectionBackground(Color selectionBackgroud): 指定被选项的背景色;setSelectionForeground(Color selectionForeground); 指定被选项的前景色;getSelectedIndices(): 以int

16、形式获得所有被选项的索引值;getSelectedValues(): 以Object形式获得所有被选项的内容;8.3.6 JList组件JList提供的常用方法8.3.6 JList组件JList提供的常用方法clearSelection(): 取消所有被选中的项;isSelectionEmpty(): 是否有被选中的项,若有,则返回true;isSelectedIndex(int index); 指定的索引是否被选中,若选中,则返回true;ensureIndexIsVisible(int index); 使指定项在选择窗口中可见;setFixedCellHeight(int height)

17、; 设置窗口中每个选项的高度;setVisibleRowCount(int count); 设置在选择窗口中最多可见的选项数;8.3.6 JList组件JList提供的常用方法8.3.6 JList组件JList提供的常用方法getPreferredScrollableViewportSize(); 获得使指定个数选项可见需要的窗口高度;setSelectionModel(int selectModel); 设置选择框的选取模式;例子:ListDemo.java8.3.6 JList组件JList提供的常用方法8.3.7 JTextField组件创建一个单行文本框;设置默认文本:JTextFi

18、eld tf=new JTextField(“请输入姓名”);JTextField类提供的常用方法setText(String text); /设置文本框的文本getPreferredSize(); /获得文本框的首选大小,返回Dimensions类型的对象;scrollRectToVisible(Rectangle r); /向左或向右滚动文本框中的内容;setColumns(int columns); /设置文本框最多可显示的列数;8.3.7 JTextField组件创建一个单行文本框;setFont(Font f); /设置文本框的字体;setScrollOffset(int scrol

19、lOffset); /设置文本框的移动偏移量,以像素为单位;setHorizontalAlignment(int alignment); /设置文本框的内容水平对齐方式;由下表的常量指定;静态常量常量值显示位置LEFT2靠左CENTER0具中RIGHT4靠右例子:TextFieldDemo.javasetFont(Font f); /设置文本框的字体;静态8.3.8 JPasswordField组件创建一个密码框,不显示用户输入的内容,只显示一个特定的字符;JPasswordField类提供的常用方法setEchoChar(char c); /设置回显字符,默认.getEchoChar();

20、/返回char型的回显字符echoCharIsSet(); /查看是否设置了回显字符,若已经设置,返回true,否则为false;getPassword(); /获得用户输入的文本信息,返回值为char型的数组;例子:PasswordFieldDemo.java8.3.8 JPasswordField组件创建一个密码框,8.3.9 JTextArea组件创建一多行文本域,可以进行编辑;JTextArea类提供的常用方法;append(String str); /将指定文本添加到文档末尾;insert(String str, int pos); /将指定文本插入到指定位置;replaceRang

21、e(String str, int start, int end); /将新文本替换指定位置开始到指定位置结束的文本;getColumnWidth(); /获取列的宽度;getLineCount(); /获取文本区包含的行数;getPreferredSize(); /返回文本区的首选大小;getRows(); /返回文本域的行数;setLineWrap(boolean b); /是否自动换行,默认为false例子:TextAreaDemo.java8.3.9 JTextArea组件创建一多行文本域,可以进行8.4 常用的布局管理器布局管理器负责管理组件在容器中的排列方式;为了支持Java的跨平

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

23、,若没有足够的空间,则回行显示;当容器大小发生变化时,按此规则重新排列组件;流布局管理器默认居中显示组件,可通过setAlignment()方法进行设定;setAlignment(int align);align可选值:FlowLayout.LEFTFlowLayout.CENTERFlowLayout.RIGHT8.4.1 不使用布局管理器(略)8.4.2 FlowLayFlowLayout布局管理器默认组件间的距离(水平、垂直)为5像素;可用setHgap(int hgap); 和setVgap(int vgap);进行设置例子: FlowLayoutDemo.javaFlowLayout

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

25、BorderLayout.NORTH;BorderLayout.SOUTH;BorderLayout.WEST;BorderLayout.EAST;边界布局管理器为JFrame窗体的默认布局管理器;BorderLayout布局管理器默认组件间的水平、垂直距离均为0像素,可通过setHgap(int hgap);和setVgap(int vgap)进行设定;例子:BorderLayoutDemo.javaBorderLayout布局管理器默认组件间的水平、垂直距离8.4.4 GridLayout布局管理器即网格布局管理器;布局方式:将容器按照用户的设置平均分成若干网格,可通过GridLayout

26、()构造函数进行指定;GridLayout(int rows, int cols);说明:rows0 & cols=0: 容器先按行进行排列,当组件个数大于rows时,再增加一列;rows=0 & cols0: 容器先按列进行排列,当组件数大于cols时,再增加一行;rows0 & cols0: 容器先按行进行排列,当组件个数大于rows时,再增加一列;rows0 & cols0 & 组件个数大于rows*cols时:再增加一列;8.4.4 GridLayout布局管理器即网格布局管理器;GridLayout布局管理器默认组件间水平、垂直距离均为0像素,可通过setHgap(int)和setV

27、gap(int)进行设定;例子:GridLayoutDemo.javaGridLayout布局管理器默认组件间水平、垂直距离均为08.5 常用的面板面板可以添加到JFrame窗体中;子面板可以添加到上一层面板中,可以实现对所有组件进行分层管理,不同关系的组件采用不同的布局管理方式,使界面更美观;8.5 常用的面板面板可以添加到JFrame窗体中;8.5.1 JPanel面板JPanel默认采用FlowLayout布局管理方式;例子:PanelDemo.java8.5.1 JPanel面板JPanel默认采用FlowLa8.5.2 JScrollPane面板为组件提供带滚动条的面板;JScrol

28、lPane类提供的常用方法setViewportView(Component view); /设置在面板中显示的组件;setHorizontalScrollBarPolicy(int); /设置水平滚动条的显示方式;setVerticalScrollBarPolicy(int); /设置垂直滚动条的显示方式;setWheelScrollingEnabled(false); /设置滚动条是否支持鼠标滚轮;8.5.2 JScrollPane面板为组件提供带滚动条的面JScrollPane类提供的滚动条的显示方式(静态常量)HORIZONTAL_SCROLLBAR_AS_NEEDED: 需要时显示;

29、HORIZONTAL_SCROLLBAR_NEVER: 水平滚动条永不显示;HORIZONTAL_SCROLLBAR_ALWAYS: 水平滚动条一直显示;VERTICAL_SCROLLBAR_AS_NEEDED: 需要时显示;VERTICAL_SCROLLBAR_NEVER: 垂直滚动条永不显示;VERTICAL_SCROLLBAR_ALWAYS: 垂直滚动条一直显示;JScrollPane类提供的滚动条的显示方式(静态常量)例子:ScrollPaneDemo.java8.6 常用事件处理8.6.1 动作事件处理动作事件由ActionEvent类捕获,最常用的是当单击按钮后发出的动作事件,可通

30、过实现ActionListener接口处理相应的动作事件;ActionListener接口的原型如下:public interface ActionListener extends EventListenerpublic void actionPerformed(ActionEvent e);例子:ScrollPaneDemo.javaActionEvent类提供的常用方法getSource(): 获取触发此事件的对象,返回类型为Object;getActionCommand(): 获取与当前动作相关的命令字符串,返回类型为String;例子:ActionEventDemo.javaActio

31、nEvent类提供的常用方法getSource()8.6.2 焦点事件处理焦点事件由FocusEvent类捕获,对于焦点事件可以通过实现FocusListener接口处理相应的事件;FocusListener接口原型:public interface FocusListener extends EventListenerpublic void focusGained(FocusEvent e);public void focusLost(FocusEvent e);8.6.2 焦点事件处理焦点事件由FocusEvent类捕获8.6.2 焦点事件处理FocusEvent类比较常用的方法getSo

32、urce():获取触发事件的目标对象;例子:FocusEventDemo.java8.6.3 鼠标事件处理MouseEvent类捕获鼠标事件,可通过MouseListener接口处理鼠标事件;MouseListener有5个抽象方法(下页)8.6.2 焦点事件处理FocusEvent类比较常用的方法public interface MouseListener extends EventListener/鼠标进入时触发public void mouseEntered(MouseEvent e); /鼠标按下时触发public void mousePressed(MouseEvent e); /鼠标释放时触发public void mouseReleased(MouseEvent e);/鼠标单击时触发public void mouseClicked(MouseEvent e);/鼠标移出时触发publi

温馨提示

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

评论

0/150

提交评论