收藏 分享(赏)

基本网络使用.ppt

上传人:杨桃文库 文档编号:4896495 上传时间:2019-01-20 格式:PPT 页数:84 大小:2.20MB
下载 相关 举报
基本网络使用.ppt_第1页
第1页 / 共84页
基本网络使用.ppt_第2页
第2页 / 共84页
基本网络使用.ppt_第3页
第3页 / 共84页
基本网络使用.ppt_第4页
第4页 / 共84页
基本网络使用.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、Java语言程序设计,第六部分 Java图形用户界面,Java图形用户界面,第一讲 图形用户界面概述,图形用户界面,图形用户界面(Graphical User Interface,GUI) ,是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种屏幕元素。为应用程序提供一个友好的图形化的交互界面。 图形用户界面由组件组成。组件是可见的对象。用户可以通过鼠标或键盘对他们进行操作。 Java在java.awt和javax.swing包中提供了构成java图形用户的组件类事件类。,3,4,图形用户界面,跨平台的图形用户界面 抽象窗口工具包AWT abstract window t

2、oolkit,提供了图形用户界面和图形在Java兼容的操作系统中使用本地窗口系统进行显示。 它包含了许多标准的GUI组件,如按钮、菜单、列表、文本区等,同时它还包括窗口、面板等容器。 Swing Swing是建立在AWT基础之上的,它用来代替AWT中的重量组件,而不是用来替代AWT本身。 它利用了AWT的底层组件,包括图形、颜色、字体、工具包和布局管理器等。 它使用AWT最好的部分来建立一个新的轻量组件集,同时还提供了大量有助于开发图形用户界面的附加组件。,java.awt包的子包,java.awt 包含用于创建用户界面和绘制图形图像的所有类 java.awt.color 提供用于颜色空间的类

3、 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类 java.awt.font 提供与字体相关的类和接口 java.awt.image 提供创建和修改图像的各种类,5,7,创建图形用户界面,组件(Component) 是构成图形用户界面的基本成分和核心元素。 组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。 它有众多的子类,如Button(按钮)、Checkbox(复选框)等等。这些类每个都能完成一定的控制功能 容器(Container) 是Compon

4、ent的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器,在其可视区内显示这些组件。 想要在屏幕上显示某个组件,则必须先将该组件添加到某个容器中,这些组件可随着该容器一起显示在屏幕上。,8,创建图形用户界面,组件大小 组件的宽度和高度 组件定位 相对于容器,组件左上角的坐标 布局管理器 每个容器都有一个布局管理器,用于保证图形用户界面具有良好的平台无关性。 容器中的布局管理器负责管理各个组件的大小和位置,因此,用户无法在这种情况下设置这些组件的有关位置信息的属性。 不使用布局管理器,自己定义组件的大小,将导致程序的系统相关。,Component,9,pu

5、blic abstract class Component extends Objectimplements ImageObserver, MenuContainer, Serializable public int getWidth() /宽度public int getHeight() /高度public void setSize(int width, int height) /宽度和高度public int getX() /位置的X坐标值public int getY() /位置的Y坐标值public void setLocation(int x, int y)/坐标位置,x、y指定组件

6、左上角相对于容器的坐标位置public void setBounds(int x, int y, int width, int height)/坐标位置和宽度、高度public Color getBackground() /获得组件的背景颜色public void setBackground(Color c) /设置组件的背景颜色public Font getFont() /获得组件字体public void setFont(Font f) /设置组件字体public void setVisible(boolean b) /设置组件是否显示 ,javax.swing包,Swing是构筑在AWT

7、上层的一组GUI组件的集合,为保证可移植性,它完全用Java语言编写,与AWT相比,提供了更完整的组件,引入了许多新的特性和能力。 Swing提供更多的组件库,如:JButton,JLabel等。这些增强的组件在Swing中的名称通常都是在AWT组件名前增加了一个“J”字母,如AWT中的Button在Swing中是JButton。 大部分的Swing组件是用Java码直接在画布(canvas)上画出来的。Swing组件较不依赖目标平台,且使用较少的本地资源,被称之为轻量级组件,而AWT组件就被称为重量级组件。,10,11,Java图形用户界面,第二讲 简单AWT组件和容器,13,AWT中的容器

8、,14,AWT中的基本控件,标签,标签(Label)是一种只能用来显示单行文本的组件。 标签在容器中的对齐方式有三种:左对齐、居中和右对齐,用LABEL.LEFT、LABEL.CENTER、LABEL.RIGHT三个静态常量表示,在程序中可以设置其对齐方式。 标签类有三个构造方法: Label( ) 生成一个空标签 Label(String text) 生成一个带有指定文本的标签 Label(String text, int alignment) 生成一个带有指定文本和在容器中的对齐方式的标签,15,按钮,按钮在屏幕上通常表现为一块有边界的矩形区域,上面有文字标记来说明该按钮的功能, 按钮由B

9、utton类来定义,其构造方法有二个: Button( ) 生成一个没有标记的按钮 Button(String label) 生成一个带标记label的按钮 Button类中有一系列对按钮进行管理的方法,可以进行设置和获取按钮的状态,处理按钮产生的事件等。常用的方法有: setLabel(String label) 设置按钮标记 getLabel( ) 获取按钮标记,16,文本框,文本框(TextField)和多行文本框(TextArea)是用来显示和输入文本的组件,它们都是TextComponent的子类。 文本框由TextField 类来创建,其构造方法有: TextField( ) 创建

10、一个空的文本框 TextField(Strint text) 创建一个带有初始文本的文本框 TextField(int Columns) 创建一个指定列数的文本框 TextField(String text,int colulmns) 创建一个指定列数和带有初始文本的文本框,17,多行文本框,多行文本框由TextArea 类来创建,其构造方法有: TextArea() 创建一个0行长, 0列宽的空多行文本框 TextArea(int,int) 创建一个具有给定行数,给定列数的空多行文本框 TextArea(String) 创建一个具有给定字符串的多行文本框 TextArea(String,in

11、t,int) 创建一个具有给定字符串、给定行数、列数的多行文本框,18,常用容器,容器有两种:窗口(window)和面板(panel) 窗口可以独立存在,可被移动,可被最大化和最小化,有标题栏、边框、可添加菜单栏。 面板不能独立运行,必须包含在另一个容器里。面板没有标题,没有边框,不可添加菜单栏。 一个窗口可以包含多个面板,一个面板可以包含另一个面板,但是面板不能包含窗口。 窗口类和面板类都是容器类Container的子类。 容器中的布局管理器负责各个组件的大小和位置,如果试图使用Java语言提供的setLocation()、setSize()、setBounds()等方法,则都会被布局管理器

12、覆盖。 如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为setLayout(null)。,19,20,框架,Frame Window类的子类 是一种带标题栏并可以改变大小的窗口 setSize( ) setVisible( ) setBackground( ),21,public class MyFrame extends Frame public static void main(String args) / 构造方法MyFrame fr = new MyFrame(“Hello Out There!“);/ 设置Frame的大小,缺省为(0,0)fr.setSiz

13、e(200, 200);/ 设置Frame的背景,缺省为红色fr.setBackground(Color.red);/ 设置Frame为可见,缺省为不可见fr.setVisible(true);public MyFrame(String str) super(str); / 调用父类的构造方法 ,对话框,对话框是一种可移动的窗口,比框架简单,没有那么多的控制元素,如最小化、状态栏。 对话框分为模态或非模态: 当一个模态的对话框打开时,不允许访问应用程序中的其他窗口,直到该对话框关闭。 当一个非模态的对话框打开时,用户仍然可以访问其他窗口。,22,public class Dialog exte

14、nds Window public Dialog(Frame owner) /owner指明拥有对话框的框架public Dialog(Frame owner, String title) /title是对话框的窗口标题public Dialog(Frame owner, boolean modal) /modal指明该对话框是否为模式窗口public Dialog(Frame owner, String title, boolean modal)public void setVisible(boolean b),对话框,24,面板,面板不能独立运行,必须包含在另一个容器里。面板没有标题,没有

15、边框,不可添加菜单栏。 一个窗口可以包含多个面板,一个面板可以包含另一个面板,但是面板不能包含窗口。 Panel 放到其他容器中 add添加到其他容器中 可作为其他控件的容器 add添加控件,import java.awt.*; public class FrameWithPanel extends Frame public FrameWithPanel(String str)super(str);public static void main(String args)FrameWithPanel fr= newFrameWithPanel(“Frame with Panel“);Panel

16、pan=new Panel();fr.setSize(200,200);fr.setBackground(Color.blue);fr.setLayout(null);pan.setSize(100,100);pan.setBackground(Color.yellow);fr.add(pan);fr.setVisible(true); ,Java图形用户界面,第三讲 布局管理器,27,布局,容器的布局 Java程序布局的特点 窗口大小的不确定性 控件的大小和位置可以随窗体大小的调整而调整 布局管理器 Java为了实现跨平台的特性并获得动态的布局效果,将容器内的所有组件安排给一个“布局管理器”

17、负责管理。 当窗口移动或调整大小后组件如何变化等功能,授权给对应的容器布局管理器来管理。 不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。,常用的布局管理器,FlowLayout BorderLayout GridLayout CardLayout GridBagLayout,28,29,布局管理器,FlowLayout FlowLayout布局管理器是Panel和Applet的缺省布局管理器。 这种布局方式是将组件一排一排地依次放置。 当容器被重新设置大小后,则布局也将随之发生改变。各个组件大小不变,而其相对位置会发生变化。,import java.awt.*

18、; public class MyButtons public static void main(String args)Frame f=new Frame();f.setLayout(new FlowLayout();Button button1=new Button(“OK“);Button button2=new Button(“OPEN“);Button button3=new Button(“CLOSE“);f.add(button1);f.add(button2);f.add(button3);f.setSize(300,100);f.setVisible(true); ,31,布

19、局管理器,FlowLayout 容器中各个组件在FlowLayout布局管理器中,缺省为居中放置,但也可设置为左对齐或右对齐。如果希望增加组件之间的间距,可以在构造方法中进行相应设置。如使用Component类的setLayout()方法实现FlowLayout布局管理器。 例如 setLayout(new FlowLayout (FlowLayout.RIGHT,20,40); 右对齐,组件之间水平间距20个像素,竖直间距40个像素 setLayout(new FlowLayout (FlowLayout.LEFT); 左对齐,水平和竖直间距为缺省值:5 setLayout(new Flow

20、Layout(); 使用缺省居中对齐方式,水平和竖直间距为缺省值:5,32,布局管理器,BorderLayout BorderLayout 布局管理器是Window ,Frame和Dialog的缺省布局管理器。 BorderLayout布局管理器包括 5 个区域:North,South,East,West和Center,其方位的确定符合“上北下南左西右东”的规则。 使用BorderLayout布局管理器的容器被拉伸后,即大小改变了,但各个组件的相对位置不变,其中间部分组件的尺寸会发生变化,四周组件宽度固定不变。,import java.awt.*; public class ButtonDir

21、 public static void main(String args)Frame f=new FrameWithPanel(“BorderLayout“);f.setLayout(new BorderLayout();f.add(“North“,new Button(“North“);f.add(“South“,new Button(“South“);f.add(“East“,new Button(“East“);f.add(“West“,new Button(“West“);f.add(“Center“,new Button(“Center“);f.setSize(200,200);f.

22、setVisible(true); ,34,布局管理器,BorderLayout 在容器中,使用双参数的add()方法添加组件。但每个区域只能添加一个组件,如果添加多个组件,则只能有一个显示。 如果想要在某一区域添加多个组件,则必须先放置一个容器,再将多个组件置于该容器中即可。 add()方法的第一个参数是被添加到容器中的组件,第二个参数是添加的方位,如果没有指定添加位置,则表示为默认的“Center“方位,这两个参数的位置是可以互换的。,35,布局管理器,GridLayout GridLayout 布局管理器可以使容器中的各个组件呈网格状布局。当改变容器大小后,其中的组件相对位置不变,但大小

23、改变。 容器中各个组件同高度、同宽度。各个组件按照从上到下从左到右的顺序依次排列。 例如:new GridLayout(3,2),表示生成一个3行2列的GridLayout布局管理器对象。,import java.awt.*; public class ButtonGrid public static void main(String args)Frame f=new Frame(“GridLayout“);f.setLayout(new GridLayout(3,2);f.add(new Button(“1“);f.add(new Button(“2“);f.add(new Button(“

24、3“);f.add(new Button(“4“);f.add(new Button(“5“);f.add(new Button(“6“); f.setSize(200,200);f.setVisible(true); ,37,布局管理器,CardLayout CardLayout 布局管理器能够实现两个以至更多的成员共享同一显示空间。 共享的成员之间的关系就象一叠卡片(Card)之间的关系一样。只有最上面的成员是可见的。 在一张卡片中只能显示一个组件,因此,可以使用容器嵌套的方法显示多个组件。,import java.awt.*; import java.awt.event.*; publi

25、c class ThreePages implements MouseListener CardLayout layout=new CardLayout();Frame f=new Frame(“CardLayout“);Button page1Button;Label page2Label;TextArea page3Text;Button page3Top,page3Bottom;public static void main(String args)new ThreePages().go(); public void go()f.setLayout(layout);f.add(page1

26、Button=new Button(“Button page“),“page1Button“);page1Button.addMouseListener(this);f.add(page2Label=new Label(“Label page“),“page2Label“);page2Label.addMouseListener(this);,Panel panel=new Panel();panel.setLayout(new BorderLayout();panel.add(page3Text=new TextArea(“Composite page“);page3Text.addMous

27、eListener(this);panel.add(page3Top=new Button(“Top button“),“North“);page3Top.addMouseListener(this);panel.add(page3Bottom=new Button(“Buttom button“),“South“);page3Bottom.addMouseListener(this);f.add(panel,“panel“);f.setSize(200,200);f.setVisible(true); public void mouseClicked(MouseEvent e)layout.

28、next(f);public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e) ,40,布局管理器,无布局管理器 在程序中还可以使用setLayout(null)方法设置某个容器的布局管理器为空,也就是无布局管理器。 用户必须使用Java语言提供的setLocation() ,setSize(),setBounds()等方法,为容器中的每个组件设置大小和显

29、示位置,否则将无法看到这些组件。 如果用户不设置布局管理器,那么这个程序的显示效果将会与平台相关。,41,容器,框架 BorderLayout 面板 FlowLayout 创建面板和构造复杂布局 容器的嵌套 复杂的布局管理器 GridBagLayout布局管理器可以提供最复杂的容器布局,Java图形用户界面,第四讲 事件处理,43,事件模型,事件 对于一个用户界面而言,最重要的是实现和用户的交互,接受用户的输入,并执行相应的动作。这都是通过AWT的事件处理机制实现的。 当用户在界面上执行了某个动作,如按下鼠标,按下键盘按键等, 都将会导致事件的发生。,import java.awt.*; im

30、port java.awt.event.*; class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(“Action occurred“); public class TestButton public static void main(String args) Frame f=new Frame(“Test“);Button b=new Button(“Press Me!“);b.addActionListener(new Butto

31、nHandler();f.add(“Center“,b);f.pack();f.setVisible(true); ,45,事件处理模型,层次模型 控件处理所有事件 委托模型 事件源对象 产生事件的组件对象,如按钮。 事件对象 它描述了发生什么事情。 事件监听器 调用事件处理方法的对象。,事件处理模型,这种委托事件处理模型具有相当的灵活性和很强的事件处理能力,使得任何数量的事件监听器能监听来自任意多个事件源对象的各个种类的事件。例如,一个程序可以为每个事件源设置一个监听器,也可以用一个监听器处理所有事件源产生的所有事件,甚至可以为一个事件源产生的一种事件设置多个监听器,等等。,46,publi

32、c class TestButton public static void main(String args) Frame f = new Frame(“Test“);Button b = new Button(“Press Me!“);b.addActionListener(new ButtonHandler();f.setLayout(new FlowLayout(); f.add(b);f.setSize(200, 100);f.setVisible(true); class ButtonHandler implements ActionListener public void acti

33、onPerformed(ActionEvent e) System.out.println(“Action occurred“); ,Button是事件源,事件,事件处理者,事件类和事件,48,事件类和事件,ComponentEvent(组件事件) 组件尺寸的变化、移动 ContainerEvent(容器事件) 容器内组件的增加、删除 WindowEvent(窗口事件) 关闭和打开窗口 FocusEvent(焦点事件) 焦点的获得和释放 KeyEvent(键盘事件) 按键的按下,松开 MouseEvent(鼠标事件) 单击鼠标,拖动鼠标 ActionEvent(动作事件) 按钮按下,TextF

34、ield中按Enter键 ItemEvent(项目事件) 选中项目或放弃选中项目 TextEvent(文本事件) 文本内容改变。,49,事件处理,对于某种类型的事件XXXEvent, 要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener。 例如,动作事件类取名为ActionEvent,则相应的动作事件监听器接口名字为ActionListener。 事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。 b.addActionListener(new Button

35、Handler(); 不同的监听器接口中定义了不同的处理方法。 例如,ActionListener接口中只定义了一个处理方法ActionPerformed(ActionEvent)。,50,事件类、事件监听器接口和方法,51,事件类、事件监听器接口和方法,52,import java.awt.*; import java.awt.event.*; public class TwoListen implements MouseMotionListener, MouseListener, WindowListenerprivate Frame f, TextField tf;public stat

36、ic void main(String args) TwoListen two=new TwoListen();two.go();public void go() f=new Frame(“Two listeners example“);f.add(new Label(“Click the mouse“),“North“);tf=new TextField(30); f.add(tf,“South“);f.addMouseMotionListener(this);f.addMouseListener(this);f.addWindowListener(this);f.setSize(300,2

37、00);f.setVisible(true);public void mouseDragged(MouseEvent e)String s=“Mouse dragging:X=“+e.getX()+“Y“+e.getY();tf.setText(s);public void mouseMoved(MouseEvent e)public void mouseClicked(MouseEvent e),public void mouseEntered(MouseEvent e)String s=“The mouse entered“;tf.setText(s);public void mouseE

38、xited(MouseEvent e)String s=“The mouse has left the building“;tf.setText(s);public void mousePressed(MouseEvent e)public void mouseReleased(MouseEvent e)public void windowClosing(WindowEvent e)System.exit(1);public void windowOpened(WindowEvent e)public void windowIconified(WindowEvent e)public void

39、 windowDeiconified(WindowEvent e)public void windowClosed(WindowEvent e)public void windowActivated(WindowEvent e)public void windowDeactivated(WindowEvent e) ,55,事件适配器,由于接口都是抽象的,因此,当通过实现Listener接口完成事件处理时,要同时实现该接口中的所有方法。当某个类实现MouseListener接口时,即使只使用其中的一个方法。它也必须重写该接口中的个方法,这将给编程人员带来多余的工作量,既影响编程效率,也由于程序

40、变长而影响了程序的可读性。 在java语言中,11个监听器中有7个监听器有多于个的方法。为了方便起见,java语言为这个Listener接口都提供了Adapter(适配器)类。当我们想要使用事件处理机制时,只需让该类继承事件所对应的Adapter类,仅仅重写需要的方法就可以了,这样无关的就不用实现了。,内部类,匿名类,Java图形用户界面,第五讲 swing控件,swing控件,59,public class LoginJFrame extends JFramepublic LoginJFrame()super(“用户登录“);this.setSize(400,100); this.setBa

41、ckground(java.awt.Color.lightGray); this.setLocation(300,240); this.setDefaultCloseOperation(EXIT_ON_CLOSE); Container jframe_content = this.getContentPane(); jframe_content.setLayout(new java.awt.FlowLayout(); jframe_content.add(new JLabel(“userid“); jframe_content.add(new JTextField(“user1“,10); j

42、frame_content.add(new JLabel(“password“);jframe_content.add(new JPasswordField(10); jframe_content.add(new JButton(“Ok“); jframe_content.add(new JButton(“Cancel“);this.setVisible(true); ,swing控件,class UserJFrame JTextArea JRadioButton ButtonGroup bgroup = new ButtonGroup(); radiob_male = new JRadioB

43、utton(“男“,true); bgroup.add(radiob_male); JComboBox combox_province.getSelectedIndex(); combox_city.removeAllItems(); combox_city.addItem(this.citiesij);,60,swing控件,class EditorJFrame JCheckBox new JCheckBox(“粗体“); JToolBar toolbar.add(checkb_bold); JTextArea text.cut(); text.copy(); text.paste(); t

44、ext.setForeground(color); text.setFont(),61,swing控件,class EditorJFrame JMenuBar JMenu JMenuItem JCheckBoxMenuItem JRadioButtonMenuItem JPopupMenu JOptionPane.showMessageDialog,62,swing控件,LoanJFrame.class,63,swing控件,LoanJFrame.class Jspinner spin_year.setValue(year); Jtable table=new JTable(datas, ti

45、tles); JScrollPane String titles Object datas this.getContentPane().add(new JScrollPane(table);,64,swing控件,65,swing控件,RoseJFrame.java Canvas paint(Graphics g) repaint(); update(Graphics g) Graphics g.setColor(color); g.drawLine(x0,0,x0,y0*2); g.fillOval(x0+x,y0+y,1,1); JColorChooser.showDialog(this,

46、“选择颜色“,Color.blue);,66,swing控件,使用鼠标随意画线 PaintJFrame.java 使用鼠标画直线 PaintLineJFrame.java,67,Java图形用户界面,第六讲 开发工具,69,eclipse,JDK IDE,70,欢迎界面,71,创建新项目,File New Project 选择 Java Project,72,输入 Project Name 选择 JRE,73,File New Class 填写 类名 选择 包 main方法,74,75,错误提示信息,76,导入类和项目,File Import,77,导入类和项目,选择目录 选择文件 选择包,NetBeans,78,79,NetBeans,80,新建项目,81,新建文件,82,对图形用户界面的支持,83,对图形用户界面的支持,84,编译和运行文件,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报