您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Java语言程序设计基础教程课件(第6章)1
第6章Java程序设计概述6.1Java的GUI6.2用AWT生成图形化用户界面6.3常用容器6.4布局管理器6.5AWT事件处理模型6.6AWT常用组件场景:用户登录当前实现Login.java登录名/密码登录结果•当前实现的问题数据硬编码,若要从用户那里获得数据,每次都要改代码,然后编译,测试,最终运行。登录结果提示不友好。GUI程序6.1Java的GUI图形用户界面,是指使用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令,启动操作,并将系统运行的结果同样以图形方式显示给用户。窗口的菜单条窗口的标题值窗口菜单条中的菜单菜单中的菜单项窗口的工具条工具条中的工具窗口的状态栏窗口的内容面板下拉列表框复选框列表框按钮目前Java主要提供了两个处理图形用户界面的类库:java.awt和javax.swing。AWT:抽象窗口工具集(Java1.0),大部分依赖操作系统,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件。Swing(Java1.2):Swing是在AWT的基础上构建的,提供了比标准AWT组件更强大和灵活的功能。其外观和功能不依赖于任何由操作系统平台的窗口系统所提供的代码,是轻量级组件。Swing组件都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类。Swing组件架构在AWT之上,是AWT的扩展而不是取代,Swing使用的仍然是Java1.1的事件处理模型。2020/2/1296.2用AWT生成图形化用户界面抽象窗口工具包AWT是API为Java程序提供的建立图形用户界面GUI工具集,AWT可用于Java的applet和applications中。6.2.1java.awt包AWT类包含在java.awt包中,主要包括用户界面组件、事件处理模型、图形和图像工具、布局管理器等。6.2.2组件Java的图形用户界面的最基本组成部分是组件,组件是在图形用户界面中和用户进行交互的。一般的Component对象不能独立地显示出来,必须“放在”某一Container中才可以显示出来。6.3常用容器容器Container类容纳别的Component对象;包括add方法,用来添加其他Component对象;有两种常见的Container:Window:其对象表示可以自由移动的顶级窗口;Panel:其对象可以容纳其他Component对象,但不能独立存在,必须被添加到Window等Container中。6.3.1FrameFrame类是Container类的间接子类。当需要一个窗口时,可使用Frame或其子类创建一个对象。窗口也是一个容器,可以向窗口添加组件。窗口默认地被系统添加到显示器屏幕上,因此,不允许将一个窗口添加到另一个容器中。Frame是顶级窗口,可以显示标题,重置大小。当Frame被关闭,将产生WindowEvent事件,Frame无法直接监听键盘输入事件。Frame类是是带有标题和边框的顶层窗口。Frame类的常用构造方法:Frame()Frame(Strings)创建标题栏为字符串s的窗口Frame类的重要方法如下:setTitle(Stringname)——设置窗口中标题栏的文字。setSize(intwidth,intheight)——设置窗口的大小。setBackground(Colorc)——设置窗口的背景颜色。setLocation(intx,inty)——设置组件的位置。setVisible(booleanb))——设置是否可见。setResizable(booleanb)——设置是否可以改变窗口大小。【例6-1】使用Frame容器的例子。importjava.awt.*;publicclassep6_1extendsFrame{publicstaticvoidmain(Stringargs[]){ep6_1fr=newep6_1(HelloOutThere!);fr.setSize(200,200);fr.setBackground(Color.red);fr.setVisible(true);}publicep6_1(Stringstr){super(str);//调用父类的构造方法}}JFrame类JFrame的继承结构java.lang.Object└java.awt.Component└java.awt.Container└java.awt.Window└java.awt.Frame└javax.swing.JFrameJframe类的setDefaultCloseOperation的方法setDefaultCloseOperation(intoperation)其中的参数operation取下列有效值:DO_NOTHING_ON_CLOSE(什么也不做)HIDE_ON_CLOSE(隐藏当前窗口)DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗体占有的其他资源)EXIT_ON_CLOSE(结束窗体所在的应用程序)importjava.awt.Color;importjavax.swing.JFrame;publicclassJ_Frame{publicstaticvoidmain(String[]args){JFrameapp=newJFrame(MyFirstTest);app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setLocation(300,300);app.setSize(360,150);app.setBackground(Color.blue);app.setResizable(false);app.setVisible(true);}}【例6-1-1】使用JFrame容器的例子。运行结果:importjava.awt.Color;importjavax.swing.JFrame;publicclassJ_Frame{publicstaticvoidmain(String[]args){JFrameapp=newJFrame(MyFirstTest);app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setLocation(300,300);app.setSize(360,150);app.getContentPane().setBackground(Color.BLUE);app.setResizable(false);app.setVisible(true);}}运行结果:publicContainergetContentPane()返回此窗体的contentPane对象JFrame是由contentPane和menuBar构成,当添加菜单以外的组件时,要加在contentPane上面。6.3.2PanelPanel对象是可以容纳Component的容器,具有自己的布局。常用方法:setBounds(intx,inty,intwidth,intheight)setSize(intwidth,intheight)setLocation(intx,inty)setBackground(Colorc)setLayout(LayoutManagermgr)【例6-2】一个使用Panel容器的简单例子。importjava.awt.*;publicclassep6_2extendsFrame{publicep6_2(Stringstr){super(str);}publicstaticvoidmain(Stringargs[]){ep6_2fr=newep6_2(FramewithPanel);Panelpan=newPanel();fr.setSize(200,200);fr.setBackground(Color.red);fr.setLayout(null);//取消布局管理器pan.setSize(100,100);pan.setBackground(Color.yellow);fr.add(pan);//用add方法把面板pan添加到框架fr中fr.setVisible(true);}}运行结果:6.3.3ScrollPanejava.awt包的ScrollPane类也是Container类的子类,称为滚动面板。可以把一个组件放到一个滚动面板中,然后通过滚动挑来观察着个组件。与Panel创建的容器不同在于:ScrollPane带有滚动条,而且只能向滚动面板添加一个组件。所以,经常将一些组件添加到一个面板中,然后再把这个面板添加到滚动面板中。ScrollPane有两个构造方法:ScrollPane();创建一个具有滚动条面板,滚动条初始不可见,当添加的组件的可见范围大于滚动面板时,滚动条自动出现。ScrollPane(inta);创建新的滚动面板容器。参数a指定滚动条的初始状态。a有以下取值:SCROLLBARS_ALWAYS指定无论滚动窗格和子组件各自大小如何,总是显示水平/垂直滚动条。SCROLLBARS_AS_NEEDED指定只在子组件的大小超过了滚动窗格水平/垂直尺寸时显示水平/垂直滚动条。SCROLLBARS_NEVER指定无论滚动窗格和子组件各自大小如何,永不显示水平/垂直滚动条。【例6-3】一个使用ScrollPane容器的例子。importjava.awt.*;importjava.awt.event.*;classWindoTenextendsFrame{Panelp;ScrollPanescrollpane;WindoTen(){setLayout(newFlowLayout());p=newPanel();scrollpane=newScrollPane(ScrollPane.SCROLLBARS_ALWAYS);p.add(newButton(one));p.add(newButton(two));p.add(newButton(three));p.add(newButton(four));scrollpane.add(p);add(scrollpane);setBounds(60,60,200,200);setVisible(true);validate();}}publicclassep6_3{publicstaticvoidmain(Stringargs[]){newWindoTen();}}6.4布局管理器Java语言中,提供了布局管理器类的对象:布局管理器类的对象可以管理Component在Container中的布局,不必直接设置Component的位置和大小。每个Container都有一个布局管理器对象,当Container需要对Component进行定位或判断其大小尺寸时,就对调用其对应的布局管理器。Container调用setLayout方法可以改变其布局管理器对象。如果需要亲自设置组件大小或位置,则应调用setLayout(null)方法取消该容器的布局管理器。默认布局管理器【例6-4】一个设置布局管理器的例子。importjava.awt.*;publicclassep6_4{privateFramef;privateButtonb1;privateButtonb2;publicstaticvoidmain(Stringargs[]){ep6_4that=newep6_4();that.go();}publicvoidgo(){f=newFrame(GUIexample);f.setLayout(newFlowLayout());//设置布局管理器为FlowLayoutb1=newButton(PressMe);//按钮上
本文标题:Java语言程序设计基础教程课件(第6章)1
链接地址:https://www.777doc.com/doc-3685691 .html