下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java高级程序设计,第一部分 第一章 Java入门基础 第二章 异常 第三章 Java Applet类型 第四章 图形用户界面GUI(一)AWT 第五章 Java中的事件处理机制 第六章 图形用户界面GUI(二)Swing,第七章 多线程 第八章 I/O输入输出流 第九章 Java数据库连接(JDBC) 第十章 Java网络编程 第二部分 第一章 Java API 第二章 Java与多媒体 第三章 Java Bean基础,第六章图形用户界面GUI(二)Swing,6.1从AWT到Swing 6.2Swing框架 6.3JFrame、JDialog、JApplet 6.4JPanel等中间层容
2、器 6.5图标和标签 6.6各种组件,6.1 从AWT到Swing,从AWT到Swing: AWT是Swing的基础,Swing产生主要原因的是AWT不能满足图形化用户界面发展的需要。 Swing组件没有本地代码(native code),不依赖于操作系统平台的支持,这是它与AWT组件的最大区别。 Swing在不同的平台上的表现都是一致的,比AWT组件具有更强的可移植性和灵活性。,6.2 Swing框架,Swing框架: javax. swing包主要包含两种类型的组件: 顶层容器组件(Top-Level Containers,包括JFrame,JApplet,JDialog和JWindow)
3、 轻量级组件 Swing功能强大且复杂,与Swing组件相关的类依功能分散在不同的package中 ,见教材表6-1,6.3 JFrame、JDialog、JApplet,Swing的顶层容器: JFrame、JDialog 、 JApplet 和JWindow 未用纯Java实现的Swing组件 是其它Swing组件的源头,其余的Swing组件必须依附在这4个组件之一上才能显示出来 内容面板 Content Pane: 不能直接向Swing顶层容器添加组件 应先获取容器的Content Pane,然后将组件添加至Content Pane 获取内容面板可使用如下方法:容器.getContent
4、Pane() 添加组件的方法:add(组件),6.3 顶层容器-JFrame,JFrame Swing应用程序的窗口组件类,是Swing中最常使用的容器组件,可以添加其它容器和添加其它组件 JFrame类构造方法: public JFrame() public JFrame(String Title) JFrame类常用方法: public Container getContentPane() public void setDefaultCloseOperation(int operation),JFrame,方法 setDefaultCloseOperation( int operation
5、)的参数operation取以下4个常量之一:DO_NOTHING_ON_CLOSE、HIDE_ON_CLOSE、DISPOSE_ON_CLOSE、EXIT_ON_CLOSE 其它常用方法: void setLayout(LayoutManager mgr) void setContentPane(Container contentPane) void setSize(int width, int height) void setLocation(int x, int y) void setBounds(int x, int y, int width, int height) void set
6、Visible(boolean b),返 回,6.3 顶层容器-JDialog,JDialog Swing中的对话框,依赖于上层组件(窗口或对话框)。与JFrame类似,需要先获取JDialog的Content Pane,然后将组件添加到Content Pane中。 JDialog类构造方法: public JDialog(Frame owner, boolean modal) public JDialog(Frame owner, String title, boolean modal) public JDialog(Dialog owner, boolean modal) public J
7、Dialog(Dialog owner, String title, boolean modal),简单对话框JOptionPane,JDialog类主要用来创建根据需要而定制的对话框,必须制作对话框中的每一个组件。但有时候我们可能只需要对话框显示一些简单信息,或是进行简单的输入操作,Swing提供了JOptionPane这个标准对话框的类可以满足这样的需求。 JOptionPane类创建的对话框主要包含4种类型:消息对话框、输入对话框、确认对话框和选项对话框,都是模式对话框。 JOptionPane类一般不使用构造方法来创建对话框,而是使用一些名为showXXXDialog的静态方法来创建。
8、 JOptionPane类常用的静态方法见教材表6-4,返 回,6.3 顶层容器-JApplet,JApplet 是使得Java Applet能够使用Swing组件的类,它继承了java. applet. Applet。 在编写Java Applet时,若希望小程序界面上能使用Swing组件,则小程序类应该继承javax. swing. JApplet,而非java. awt. Applet了。 JApplet默认的布局管理器同JFrame一样是BorderLayout,而Applet的默认布局管理器是FlowLayout。,返 回,6.4 JPanel、JScrollPane、JSplitP
9、ane、JInternalFrame,JPanel(面板) JScrollPane(滚动面板) JSplitPane(分隔面板) JInternalFrame (内部窗口) 是Swing常用的中间层容器,它们常与顶层容器结合使用以实现较复杂的界面布局。,6.4 中间层容器-JPanel,JPanel 主要用于放置Swing轻量级组件,不能独立显示,JPanel的对象可以作为顶层容器的内容面板来使用。 JPanel类构造方法: public JPanel( ) public JPanel( LayoutManager layout ),JPanel,JPanel类常用方法: void setLa
10、yout(LayoutManager mgr) void setBackground(Color c) void setBorder(Border border) Border是接口,不能实例化,可使用javax.swing.BorderFactory类中的方法来获得边界对象,返 回,6.4 中间层容器-JScrollPane,JScrollPane Swing中的滚动面板 JScrollPane中只能放置1个组件,若希望放置多个组件,则应将这些组件先置于一个容器(如JPanel)中,再将该容器放置到JScrollPane中 JScrollPane类构造方法: public JScrollPa
11、ne(Component view) public JScrollPane(int vsbPolicy, int hsbPolicy) public JScrollPane(Component view, int vsbPolicy, int hsbPolicy),JScrollPane,其中vsbPolicy、hsbPolicy分别用于设置JScrollPane组件的垂直和水平滚动条的显示策略,缺省当view大于显示区域时自动产生滚动条 它们的取值分别为3个静态常量: 可用下述方法设定滚动策略: void setHorizontalScrollBarPolicy(int policy) vo
12、id setVerticalScrollBarPolicy(int policy),VERTICAL_SCROLLBAR_ALWAYS VERTICAL_SCROLLBAR_NEVER VERTICAL_SCROLLBAR_AS_NEEDED,HORIZONTAL_SCROLLBAR_ALWAYS HORIZONTAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_AS_NEEDED,返 回,6.4 中间层容器-JSplitPane,JSplitPane 分隔面板,一次可将两个组件同时显示在两个显示区中,若需要同时在多个显示区中显示组件,可以同时使用多个JSplit
13、Pane组件来实现。 JSplitPane类的2个静态常量可以指定是进行水平分隔还是进行垂直分隔:HORIZONTAL_SPLIT表水平分隔,VERTICAL_SPLIT表垂直分隔。,JSplitPane,JSplitPane类构造方法: public JSplitPane(int newOrientation, Component newLeftComponent, boolean newContinuousLayout, Component newRightComponent) 其中,newOrientation指定组件的分隔方向,默认水平方向分隔;newLeftComponent、new
14、RightComponent为分隔线两边要显示的组件;newContinuousLayout决定JSplitPane组件是否具有Continuous Layout功能。,返 回,6.4 中间层容器-JInternalFrame,JInternalFrame 是可以在JFrame窗口内显示的内部窗口,几乎跟JFrame的使用一样,可以最大/最小化、关闭、加入菜单等,但必须依附于像JFrame这样的顶层容器。 JInternalFrame类构造方法: public JInternalFrame(String title, boolean resizable, boolean closable, b
15、oolean maximizable, boolean iconifiable),返 回,6.5 图标和标签-图标,1、图标(Icon) Swing中可以利用Icon方便地给组件加上图片,使得组件的表现更丰富、更美观。 ImageIcon 已经实现了Icon接口,可以方便地制作图标 ImageIcon类构造方法: public ImageIcon(String filename, String description) public ImageIcon(URL location, String description),6.5 图标和标签-标签,2、标签(JLabel) Swing中的JLab
16、el与AWT中的Label类似,但JLabel可以提供带图标的标签,并且可以设置图标和文字的相对位置。 JLabel类构造方法 public JLabel(Icon image, int horizontalAlignment) public JLabel(String text, int horizontalAlignment) public JLabel(String text, Icon icon, int horizontalAlignment),JLabel,JLabel类常用方法: void setHorizontalAlignment(int alignment) void se
17、tVerticalAlignment(int alignment) void setHorizontalTextPosition(int textPosition) void setVerticalTextPosition(int textPosition),6.6 各种组件,Swing GUI程序设计中常用到的各种组件包括: 按钮JButton 选择型组件JCheckBox、JRadioButton、JComboBox 文字输入组件JTextField、JTextArea、JPasswordField、JTextPane 文件选择对话框JFileChooser 进度组件JProgressBa
18、r 表格组件JTable 菜单与工具栏JMenuBar、JMenu、JMenuItem、JToolBar 树JTree 等等 这些常用Swing组件的类层次图见教材图6-21,6.6 各种组件-索引,6.6.1 JButton 6.6.2 JCheckBox 6.6.3 JRadioButton 6.6.4 JComboBox 6.6.5 JTextField、JTextArea、JPasswordField 6.6.6 JTextPane 6.6.7 JMenuBar、JMenu、JMenuItem、JToolBar 6.6.8 JTable 6.6.9 Timer、JProgressBar
19、 6.6.10 JFileChooser 6.6.11 JTree,6.6.1 JButton,JButton类构造方法: public JButton(String text) public JButton(Icon icon) public JButton(String text, Icon icon) JButton,以及JCheckBox、JRadioButton、JMenuItem、JMenu等类都继承自抽象类AbstractButton,其中定义了设置和处理这类组件的一些常用方法。 JButton上的常见事件为ActionEvent事件,实现ActionListener进行处理。,
20、6.6.1 JButton -常用方法,AbstractButton中定义的常用方法包括: public void addActionListener(ActionListener listener) public String getActionCommand( ) public void setActionCommand(String actionCommand) public String getText( ) public void setEnabled(boolean b) public void setMnemonic(int mnemonic) 等等,返 回,6.6.2 JChe
21、ckBox,JCheckBox类构造方法: public JCheckBox(Icon icon, boolean selected) public JCheckBox(String text, boolean selected) public JCheckBox(String text, Icon icon, boolean selected) JCheckBox类常用方法: public void addItemListener(ItemListener listener) public void setSelected(boolean b) public boolean isSelect
22、ed( ) 事件处理 当JCheckBox选项的选中状态发生改变时会产生ItemEvent事件,可实现ItemListener进行处理。,返 回,6.6.3 JRadioButton,JRadioButton Swing中的单选按钮类 AWT中没有专用的单选按钮类 JRadioButton类构造方法: public JRadioButton(Icon icon, boolean selected) public JRadioButton(String text, boolean selected) public JRadioButton(String text, Icon icon, bool
23、ean selected),6.6.3 JRadioButton-实现“多选一”功能,JRadioButton要实现“多选一”的功能,须将多个单选按钮放到一个按钮组(ButtonGroup )中才能实现。 步骤: 创建各个备选的单选按钮 创建按钮组,构造方法:public ButtonGroup( ) 使用 add( AbstractButton b) 方法将各个按钮添加到按钮组中 事件处理 单选按钮选中状态发生改变时产生ItemEvent事件 一组单选按钮中选中某一个按钮时,按钮上也会触发ActionEvent事件,返 回,6.6.4 JComboBox,JComoboBox类构造方法: p
24、ublic JComboBox(Object items) JComboBox类常用方法: public Object getItemAt(int index) public Object getSelectedItem( ) public void setSelectedItem(Object anObject) public void setEditable(boolean aFlag),返 回,6.6.5 JTextField、JTextArea、JPasswordField,Swing的文本组件: JTextField、JTextArea、JPasswordField都是Swing中的
25、文本组件。其中,JTextField和JPasswordField支持单行文本编辑;JTextArea支持多行文本编辑。 它们都继承自javax.swing.text.JTextComponent 类,该类提供了许多文本组件常用的方法。,6.6.5 文本组件-常用方法,Swing文本组件的常用方法: public void copy( ) public void cut( ) public void paste( ) public String getText( ) public void setText(String t) public void select(int selectionSt
26、art, int selectionEnd) public void selectAll( ) public void setEditable(boolean b) 等等,6.6.5 文本组件-JTextField,JTextField类构造方法: public JTextField(int columns) public JTextField(String text) public JTextField(String text, int columns) 事件处理 在JTextField组件中按下【Enter】键,即会产生ActionEvent,实现ActionListener接口可对其进行
27、处理。 文本组件上在输入过程中会触发CaretEvent事件(Swing新增),CaretListener接口可对其进行处理,要重写其中的方法caretUpdate(CaretEvent e),6.6.5 文本组件-JTextArea,JTextArea类构造方法: public JTextArea(String text) public JTextArea(int rows, int columns) public JTextArea(String text, int rows, int columns) 【注意】 JTextArea默认不会自动换行,使用setLineWrap(boolea
28、n)可进行设置 JTextArea组件中按下【Enter】键不会触发事件,而只是输入字符的一部分 JTextArea组件不会自动产生滚动条,若希望显示区域不变而能编辑更多文本,可以将JTextArea组件置于JScrollPane 组件中,6.6.5 文本组件-JPasswordField,JPasswordField类构造方法: public JPasswordField(int columns) public JPasswordField(String text) public JPasswordField(String text, int columns) JPasswordField类
29、常用方法: char getPassword() char getEchoChar() void setEchoChar(char c),返 回,6.6.6 JTextPane,JTextPane 也是支持多行的文本组件,但相对于JTextArea而言,JTextPane提供了许多对文字处理的功能,如设置颜色,字体风格,设定大小,添加图片等等。 JTextPane类构造方法: public JTextPane( ) public JTextPane(StyledDocument doc) 借助 SimpleAttributeSet 和 StyleConstants 这两个类的辅助设计,可使得J
30、TextPane的内容具有丰富的变化。,返 回,6.6.7 JMenuBar、JMenu、JMenuItem、JToolBar,Swing的菜单、工具栏组件: JMenuBar,菜单条,菜单容器组件 JMenu,菜单,如文件菜单,编辑菜单等 JMenuItem,菜单项,如新建文件,打开文件命令等 JToolBar,工具栏,将软件中较常用的功能以按钮形式组织到工具栏中,避免了频繁寻找菜单的操作。,6.6.7 菜单、工具栏-JMenuBar,JMenuBar 用来放置JMenu组件的菜单容器,可添加到 JFrame组件上, 由多个 JMenu组件组成 构造方法: public JMenuBar()
31、 为JFrame组件添加菜单条(JMenuBar)的方法: public void setJMenuBar(JMenuBar menubar) 为JMenuBar添加菜单(JMenu)的方法: public JMenu add(JMenu c),6.6.7 菜单、工具栏-JMenu,JMenu 用来放置JMenuItem(菜单项)的组件 JMenu可以是单层的,也可以是多层级联的: 若是单层,向其中添加基本的菜单项即可 若需要多层,则可以向其中添加另一个包含了若干菜单项的JMenu组件,即利用JMenu的嵌套来实现级联菜单的效果了 构造方法: public JMenu(String s) pu
32、blic JMenu(String s, boolean b) 为JMenu添加菜单项(JMenuItem)的方法: public JMenuItem add(JMenuItem menuItem),6.6.7 菜单、工具栏-JMenuItem,JMenuItem JMenu 中的组件,通常代表一个菜单命令,多以字符串形式出现 可以将JMenuItem看成是一种特殊的JButton,鼠标点击之也会触发ActionEvent事件 构造方法: public JMenuItem(Icon icon) public JMenuItem(String text) public JMenuItem(Str
33、ing text, Icon icon) public JMenuItem(String text, int mnemonic) 可使用如下方法为菜单命令设置键盘快捷键: public void setAccelerator(KeyStroke keyStroke),6.6.7 菜单、工具栏-JToolBar,JToolBar 用来放置各种常用功能命令按钮的容器 构造方法: public JToolBar( ) public JToolBar(int orientation) public JToolBar(String name) public JToolBar(String name, i
34、nt orientation) JToolBar创建之后,还应该创建对应于常用命令的工具按钮添加到工具栏中,可以采用方法add(组件)来添加。,返 回,6.6.8 JTable,JTable Swing中的表格组件,可以方便地构造表格 JTable类构造方法: public JTable( ) public JTable(Object rowData, Object columnNames) public JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm),返 回,6.6.9 Timer、JProgressBar-Timer,Timer 时间控制组件,直接继承java. lang. Object类 Timer可以实现一段时间的控制,当到达一定的时间点时能触发ActionEvent事件 构造方法: public Timer(int delay, ActionListener listener
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第29讲 人体的内环境与稳态
- 街道安全巡查方案讲解
- 承台模板安装拆除施工工艺
- 绝望心理护理查房
- 物业消防电话系统维护管理指南
- 边坡监测点布设施工工艺
- 上下楼梯安全宣教内容
- 《医疗质量安全核心制度落实情况监测指标(2026年版)》考试测试卷及答案
- 儿童幼年型类风湿关节炎护理查房
- 鉴定病历认可同意范文
- 国家能源集团招聘笔试题库2024
- 分部、分项工程质量验收记录
- 退休保安人员聘用合同模板
- 农业物联网技术
- 运动训练学理论
- 环保设备运行与维护管理
- 精益-大学生创新与创业学习通超星课后章节答案期末考试题库2023年
- 八年级物理经验交流 全省一等奖
- 秋冬季猪的饲养管理课件(模板)
- 重庆高新区“拥军门店”申请审批表
- YY 0592-2016高强度聚焦超声(HIFU)治疗系统
评论
0/150
提交评论