Java图形用户界面编程.ppt_第1页
Java图形用户界面编程.ppt_第2页
Java图形用户界面编程.ppt_第3页
Java图形用户界面编程.ppt_第4页
Java图形用户界面编程.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

线程:是进程内部单一的一个顺序控制流。 线程和进程 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。 线程: 轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 多线程: 在同一个进程中有多个顺序流同时执行 Java的线程是通过java.lang.Thread类来实现的。 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体(即线程的可执行代码)。,返回,多线程回顾,多线程回顾,要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数中,并且函数所在的类是Thread类的子类,子类要覆盖Thread类中的run函数,在子类的run函数中调用想在新线程上运行的程序代码。 启动一个新的线程,我们不是直接调用Thread的子类对象的run函数,而是调用Thread子类对象的start(从Thread类继承到的)方法,Thread类对象的start方法将产生一个新的线程,并在该线程上运行该Thread类对象中的run方法。 由于线程的代码段在run方法中,那么该方法执行完成后线程也就相应的结束了。因而我们可以通过控制run方法中循环的条件来控制线程的结束。,1.继承类Thread public class Mythread extends Thread 2. 实现接口Runnable public class Mythread implements Runnable 3. 上述两种方法中都可用类Thread产生线程的对象 Thread newthread; 4. 创建并启动线程 newthread=new Thread( ); newthread.start(); 5. run方法是运行线程的主体,启动线程时,由JVM直接调用 public void run() 6 sleep方法的作用,暂停(毫秒时间的)线程的执行,让其它线程得到机会,sleep要丢出异常,必须捕获。 Try sleep(1000); catch(InterruptedException e) ,返回,多线程回顾,第12章 图形用户界面(GUI) Graphics User Interface,Java2平台包括:标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvironment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。,补充计算机基础知识,什么是C/S模式? C/S (Client/Server,客户机/服务器)模式又称C/S结构,是软件系统体系结构的一种。C/S模式简单地讲就是基于企业内部网络的应用系统。与B/S(Browser/Server,浏览器/服务器)模式相比,C/S模式的应用系统最大的好处是不依赖企业外网环境,即无论企业是否能够上网,都不影响应用。 什么是B/S模式? B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是通过IE浏览器来实现的。B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据;最大的缺点是对企业外网环境依赖性太强,由于各种原因引起企业外网中断都会造成系统瘫痪。,补充计算机基础知识,一、B/S模式的优点和缺点 B/S结构的优点 (1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。 (2)、业务扩展简单方便,通过增加网页即可增加服务器功能。 (3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。 (4)、开发简单,共享性强 B/S 模式的缺点 (1)、个性化特点明显降低,无法实现具有个性化的功能要求。 (2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。 (3)、页面动态刷新,响应速度明显降低。 (4)、无法实现分页显示,给数据库访问造成较大的压力。 (5)、功能弱化,难以实现传统模式下的特殊功能要求。 二、C/S 模式的优点和缺点 C/S 模式的优点 1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。 2.操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。 3.C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。 C/S 模式的缺点 1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。 2.兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。 3.开发成本较高,需要具有一定专业水准的技术人员才能完成。,补充计算机基础知识,7.1 图形用户界面设计基础,图形用户界面(Graphics User Interface,简称GUI)是指以图形的方式实现人与计算机之间的交互。在该界面下用户往往只需通过单击、双击、拖曳鼠标和简单的文字键入就可以轻松地操作计算机完成任务。图形用户界面生动形象、操作直观简便。,一、AWT与Swing,Java类库中提供AWT(Abstract Window Toolkit-抽象窗口工具集)和Swing两套组件是Java类库中提供的两类来实现图形用户界面; AWT由java.awt包提供,Swing由javax.swing包提供。其中均包含了用于设计图形用户界面的各种组件、布局管理器和事件类; Swing是Java语言提供的第二代设计工具,它以AWT为基础,提供了比AWT更多的特性和工具,用于建立更复杂的图形用户界面。现在常采用Swing组件来开发GUI应用程序。,1、Swing组件的体系结构,基本组件 Component,容器 Container,2、Swing组件的分类,从功能上分为:容器和基本组件;容器又分为顶层容器和中间层容器。 顶层容器:JFrame、JDialog、JApplet 。用于构造图形用户界面的窗口,并容纳其它容器和组件,它们可以独立存在 。 中间层容器 :JPanel、JScrollPane、JToolBar等。容纳其它组件,但是不能独立存在,需要添加到其它容器中。通常用来按功能组织基本组件 。 基本组件:按钮JButton、文本框JTextField等等。是图形用户界面的基本组成单位,不能独立存在,必须将其添加到一定的容器中。,二、容器与布局管理器,容器用于容纳组件,布局管理器用来设置容器中各个组件的排列方式。 1、顶层容器与窗口 每一个Java的GUI程序都必须至少包含一个顶层容器组件作为窗口; Swing中最常用的顶层容器类JFrame:用它创建的框架窗口可以独立存在,并且带有边框、标题及用于关闭和最大化/最小化窗口的图标按钮 。,创建一个框架窗口,import javax.swing.*; public class JFrameDemo extends JFrame public JFrameDemo() super(“JFrame窗口“); setBounds(50,50,300,120); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); public static void main(String args) JFrameDemo f = new JFrameDemo(); ,JFrame类常用的方法,void setLayout(LayoutManager manager) viod add(Component comp) void setBounds(int x,int y,int width,int height) void setTitle(String title) void setVisible(Boolean b) setDefaultCloseOperation(EXIT_ON_CLOSE) Container getContentPane() 所列出的大部分方法也适用于其它容器和组件,2、布局管理器,布局管理器是java.awt包中提供的专门用于设置容器中组件排列方式的类,常用的有FlowLayout、BorderLayout和GridLayout等几种。每一种容器都有一个默认的布局管理器,通过setLayout方法可以改变容器的布局方式。,流式布局举例,public class FlowLayDemo extends JFrame private JButton myButton1,myButton2,myButton3,myButton4,myButton5; public FlowLayDemo() / FlowLayDemo类的构造方法 super(“流式布局“); setBounds(50,50,300,120); setLayout(new FlowLayout(); /设置窗口为流式布局 setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); myButton1=new JButton(“第一个按钮“); /生成按钮对象 myButton2=new JButton(“第二个按钮“); myButton3=new JButton(“第三个按钮“); myButton4=new JButton(“第四个按钮“); myButton5=new JButton(“第五个按钮“); add(myButton1); /添加按钮到窗口上图7.4(a) 流式布局 add(myButton2); add(myButton3); add(myButton4); add(myButton5); public static void main(String args) FlowLayDemo f=new FlowLayDemo(); ,边界布局举例,public class BorLayDemo extends JFrame private JButton myButton1,myButton2,myButton3,myButton4,myButton5; public BorLayDemo() super(“边界布局“); setBounds(50,50,300,120); setLayout(new BorderLayout(); /设置窗口为边界布局 setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); myButton1=new JButton(“东边按钮“); myButton2=new JButton(“南边按钮“); myButton3=new JButton(“西边按钮“); myButton4=new JButton(“北边按钮“); myButton5=new JButton(“中间按钮“); add(“East“,myButton1); /添加按钮到窗口指定方位 add(“South“,myButton2); add(“West“,myButton3); add(“North“,myButton4); add(“Center“,myButton5); public static void main(String args) BorLayDemo f = new BorLayDemo(); ,网格布局举例,public class GridLayDemo extends JFrame private String names=“按钮1“,“按钮2“,“按钮3“,“按钮4“,“按钮5“,“按钮6“; public GridLayDemo() super(“网格布局“); setBounds(50,50,300,120); setLayout(new GridLayout(3,3); /设置三行三列网格布局 setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); for (int i=0;inames.length;i+) add(new JButton(namesi); /依次添加各个按钮 public static void main(String args) GridLayDemo f=new GridLayDemo(); ,一、常用Swing组件,1JLabel标签 标签用于在窗口界面上显示一行提示性或说明性的文字。标签只能显示信息,不能用于输入。JLabel类比较常用的方法有: String getText():获取标签上的文字 void setText(String text) :设置标签显示的文字为text void setFont(Font f):设置标签文字的字体,一、常用Swing组件,2JButton按钮 按钮是图形用户界面中最常见的组件,用来控制程序运行的方向。用户单击按钮时会产生ActionEvent事件,计算机将相应地执行一系列命令完成一定功能。JButton类比较常用的方法有: void setText(String text):设置按钮上的标识文字为text String getText() :获得按钮上的标识文字,一、常用Swing组件,3JTextField文本框 文本框是一个单行文本编辑框,用于接收用户输入的一行文字,也可以显示一行文字。JTextField类比较常用的方法有: String getText():获得文本框中的文本内容 void setText(String text):设置文本框的文本内容,一、常用Swing组件,4JTextArea文本区 文本区是一个多行文本编辑框,用于接收用户输入的多行文字,也可以显示多行文字。当文本区的内容装满时不会自动产生滚动条,需要将文本区组件添加到JScrollPane(滚动面板)上才能实现滚动条效果。JTextArea类具有上面列出的JTextField的相同方法,另外其比较常用的方法还有: String getSelected():获取被选中的文本 void append(String text):在文本区尾部添加文本text,一、常用Swing组件,5JRadioButton单选按钮 单选按钮只有“选中”和“未选中”两种状态,通常用一组单选按钮实现“多选一”的功能。在java中必须使用按钮组类(javax.swing.ButtonGroup)实现将多个单选按钮位于同一组中。注意,ButtonGroup仅仅是一个逻辑上的组件,在Palette组件板上并不存在该组件,因此需要自行定义ButtonGroup类的对象,并调用该类的add()方法将多个JRadioButton对象一一添加到ButtonGroup类对象中。JRadioBunon类比较常用的方法有: void setSelected(boolean b):设置一个单选按钮的状态,b为true表明选中 void setText(String text):设置单选按钮上显示的文字 boolean isSelected():返回按钮的状态,如果是选中的则返回 true,否则返回 false,一、常用Swing组件,6JCheckBox复选框 复选框也有“选中”和“未选中”两种状态,通常用一组复选框提供一组选项供用户选择。与单选按钮不同的是,在一组复选框中,可以同时选中多个复选框,也可以不选中任何一个复选框。 JCheckBox类比较常用的方法基本上与JRadioButton类的相同。,一、常用Swing组件,7JList列表框 列表框能够容纳并显示一组选项,供用户从中选择一项或多项,但不能对其进行编辑。与文本区相似,列表框中的内容增多时不会自动产生滚动条,也需要通过JScrollPane(滚动面板)才能实现滚动条效果。JList类比较常用的方法有: JList():创建一个没有选项的列表框 JList(Vector vect):创建一个列表框,其中的选项由向量表vect决定 JList(Object items):创建一个列表框,其中的选项由对象数组items决定 void setSelectionMode(int selectionMode):设置列表框支持单选还是多选 void setVisibleRowCount(int visibleRowCount ):设置列表框中可显示的行数 Object getSelectedValue():获取被选中项的内容 int getSelectedIndex(int i):获取被选中项的序号,从0开始,没有选中时值为-1 void setListData(Vector listData):设置列表框中的选项,参数是一个向量表 。,一、常用Swing组件,8JComboBox组合框 组合框是向用户提供多种选项的组件,其通常的显示形式是右边带有下拉箭头的文本框。可以在其文本框中输人选项,也可以单击下拉箭头从显示的列表中进行选择。默认组合框是不能编辑的,需要通过setEditable(true)设为可编辑。JComboBox类比较常用的方法有: JComboBox():建立一个无选项的组合框 JComboBox(Object items):创建一个组合框,其中的选项由对象数组items决定 void addItem(Object object):通过字符串类或其他类为组合框添加选项 int getSelectedIndex():获取被选中项的序号,从0开始,没有选中时值为-1 Object getSelectedItem():获得被选中项的内容,一、常用Swing组件,9JScrollPane 滚动面板 滚动面板是一个带滚动条的中间层容器,通常利用它为Swing组件中的文本区(JTextArea)、列表(JLIst)等组件添加滚动条。具体操作方法:先从Palette组件板上选取一个JScrollPane组件,在设计区上画出适当大小的区域,然后再选取一个JTextArea或JLIst组件添加到该JScrollPane上,这样文本区或列表框就会带有滚动条了。,一、常用Swing组件,10JPanel 面板 JPanel是个无边框的中间层容器,使用面板的目的是为了在窗口上分层次、分区域管理各种组件,适合比较复杂的GUI。一个窗口中可以添加多个JPanel对象,JPanel类的最常用的方法是add()方法和setLayout()方法,分别用于添加组件、设置面板布局。,对于开发项目布局,有专业的的可视化编程工具、前台美工负责,三、初

温馨提示

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

评论

0/150

提交评论