java里的swing教程.ppt

上传人:小飞机 文档编号:5436247 上传时间:2023-07-06 格式:PPT 页数:41 大小:551KB
返回 下载 相关 举报
java里的swing教程.ppt_第1页
第1页 / 共41页
java里的swing教程.ppt_第2页
第2页 / 共41页
java里的swing教程.ppt_第3页
第3页 / 共41页
java里的swing教程.ppt_第4页
第4页 / 共41页
java里的swing教程.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《java里的swing教程.ppt》由会员分享,可在线阅读,更多相关《java里的swing教程.ppt(41页珍藏版)》请在三一办公上搜索。

1、GUI入门,了解AWT以及java.awt包了解Swing组件和javax.swing包手工编码实现GUI程序掌握常用基本Swing组件的使用方法掌握常用布局管理器流式布局(FlowLayout)边界布局(BorderLayout)网格布局(GridLayout)使用面板(JPanel)实现复杂布局,GUI入门,手工编码实现GUI程序掌握常用基本Swing组件的使用方法掌握常用布局管理器流式布局(FlowLayout)边界布局(BorderLayout)网格布局(GridLayout),GUI的概念,到目前为止,我们在C和Java中编写的都是基于控制台的程序;GUI(Graphical Use

2、r Interface)即图形用户界面,它能够使应用程序看上去更加友好;Java语言之所以如此流行的一个主要原因,就是因为它支持GUI;,AWT简介,上一章我们已经知道,实现GUI编程是由一系列图形化组件来完成的(即一系列定义好的类),这些组件也被称为控件;在Java的早期版本中,GUI组件由名为AWT(Abstract Window Toolkit,抽象窗口工具包)的标准库来提供;除了GUI组件外,AWT还包括其它功能来支持图像绘画、处理剪切/复制类型的数据传送,以及其它相关操作。,java.awt包,java.awt包是Java内置的包,属于Java基础类库(JFC)的一部分,其中包括以下

3、内容:便于用户输入的一组丰富的界面组件;将组件放置在适当位置的几种布局管理器;事件处理模型;图形和图像工具等等。要使用到该包中的类,则必须显式地声明如下语句:import java.awt.*;,AWT组件的类体系结构,AWT编程示例,AWT组件最大的缺陷是它依赖于操作系统,也就是说,AWT程序运行在不同的操作上会有不同的外观和行为,这一点对于Java的平台无关性来讲,是无法容忍的。,Swing简介以及javax.swing包,Swing组件是在AWT组件基础上发展而来的轻量级组件,与AWT相比不但改进了用户界面,而且所需的系统资源更少;Swing是纯Java组件,使得应用程序在不同的平台上运

4、行时具有相同外观和相同的行为。javax.swing包中包含了一系列Swing组件,如果要使用该包中的类,则必须显式地声明如下语句:import javax.swing.*;,Swing组件的类体系结构,常用的基本Swing组件,在Swing编程中,有一些经常要使用到的组件,其中包括:JFrame(窗体,框架)JButton(按钮)JLabel(标签)JTextField(文本框),JFrame组件用于在Swing程序中创建窗体;JFrame类的构造方法有4种重载方式,以下是常用的几种:,JFrame的常用方法,创建窗体,对于类似于窗体这样的容器组件,我们一般自定义一个类,继承于JFrame类

5、,然后将窗体中的子组件作为类中成员进行声明,以方便操作,如:public class MyFrame extends JFrame容器组件是指可以容纳其它组件的组件。,创建窗体示例,import javax.swing.*;/导入必要的包/*自定义窗体类,继承于JFrame类*/public class MyFrame extends JFrame/*构造方法*/public MyFrame()/super(这是我的第一个窗体);/利用父类的构造方法设置标题 this.setTitle(这是我的第一个窗体);/设置窗体的标题 this.setSize(300,200);/设置窗体的大小 thi

6、s.setVisible(true);/设置窗体为可见,即显示窗体/*main方法,程序入口*/public static void main(String args)MyFrame mf=new MyFrame();/创建窗体实例,窗体的内容面板,一个完整的窗体是由外部框架和内容面板两部分组成的;外部框架是指由标题栏和四边所组成空心边框,它主要用来控制窗体的大小和外观;我们实际操作的是内容面板,如设置窗体的背景色,设置窗体的布局,往窗体中添加其它组件等等;使用getContentPane方法获得当前窗体的内容面板,该方法的返回值是Container(容器)类对象,如:Container co

7、ntentPane=getContentPane();Container类在java.awt包中。,Container类通常用于操作JFrame的内容面板,其常用的方法有:,内容面板示例,import java.awt.*;/Container类和Color类在此包中import javax.swing.*;public class ContentPaneDemo extends JFrame public ContentPaneDemo()super(内容面板示例);/获得当前窗体的内容面板 Container contentPane=this.getContentPane();/设置内容面

8、板的背景色为红色 contentPane.setBackground(Color.RED);setSize(300,200);setResizable(false);/设置窗体不可调整大小 setVisible(true);public static void main(String args)ContentPaneDemo cpd=new ContentPaneDemo();,Color类用于创建颜色对象,其构造方法共有7种重载方式,以下是常用的几种:Color类中还提供一系列静态的颜色常量:,在Swing程序中,按钮可能是使用量最大的组件之一,JButton则是用来创建按钮的;JButto

9、n类的构造方法有5种重载方式,以下是常用的几种:,JButton的常用方法,JLabel是最简单的Swing组件之一,用于在窗体上显示标签,JLabel既可以显示文本,也可以显示图像;JLabel类的构造方法有6种重载方式:,JLabel的常用方法,JTextField是文本框组件,主要用来接受用户的输入;JTextField类的构造方法有5种重载方式,以下是常用的几种:,JTextField的常用方法,布局管理器,用户界面上的组件可以按照不同的方式进行排列,例如:可以依序水平排列,或者按网格方式进行排列;每种方案都是指组件的一种布局,要管理这些布局,就需要使用布局管理器;布局管理器是一组实现

10、了接口的类,由这些类自动定位组件;布局管理器类在java.awt包中。,几种常用布局,流式布局java.awt.FlowLayout,边界布局java.awt.BorderLayout,网格布局java.awt.GridLayout,流式布局示例,import java.awt.*;/布局管理器在此包中import javax.swing.*;public class FlowLayoutDemo extends JFrame private JTextField txt1,txt2,txt3,txt4;/声明4个文本框 public FlowLayoutDemo()super(流式布局示例)

11、;/使用父类的构造方法设置窗体标题 txt1=new JTextField(文本框1);/分别实例化4个文本框 txt2=new JTextField(文本框2);txt3=new JTextField(文本框3);txt4=new JTextField(文本框4);Container me=getContentPane();/获取当前窗体的内容面板 me.setLayout(new FlowLayout();/设置内容面板的布局为流式布局 me.add(txt1);/分别将4个文本框添加到内容面板中 me.add(txt2);me.add(txt3);me.add(txt4);setDefa

12、ultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setVisible(true);public static void main(String args)new FlowLayoutDemo();/实例化窗体,匿名对象,边界布局示例,public class BorderLayoutDemo extends JFrame private JButton btn1,btn2,btn3,btn4,btn5;/声明5个按钮 public BorderLayoutDemo()btn1=new JButton(北边按钮);/分别实例化5个

13、按钮 btn2=new JButton(南边按钮);btn3=new JButton(西边按钮);btn4=new JButton(东边按钮);btn5=new JButton(中间按钮);Container me=getContentPane();me.setLayout(new BorderLayout();/设置内容面板的布局为边界布局 me.add(btn1,BorderLayout.NORTH);/分别将按钮添加到内容面板的各个方位 me.add(btn2,BorderLayout.SOUTH);me.add(btn3,BorderLayout.WEST);me.add(btn4,B

14、orderLayout.EAST);me.add(btn5,BorderLayout.CENTER);setTitle(边界布局示例);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setVisible(true);public static void main(String args)new BorderLayoutDemo();,网格布局示例,import java.awt.*;import javax.swing.*;public class GridLayoutDemo extends JFrame pr

15、ivate JButton btnAry;/声明按钮数组 public GridLayoutDemo()btnAry=new JButton9;/创建有9个按钮引用的数组 Container me=getContentPane();me.setLayout(new GridLayout(3,3);/将内容面板设置为3行3列的网格布局/循环实例化按钮,并逐一将按钮添加到内容面板上 for(int i=0;i btnAry.length;i+)btnAryi=new JButton(按钮+(i+1);me.add(btnAryi);setTitle(网格布局示例);setDefaultCloseO

16、peration(JFrame.EXIT_ON_CLOSE);setSize(300,200);setVisible(true);public static void main(String args)new GridLayoutDemo();,复杂布局,单独使用某种布局管理器很难实现相对复杂的布局效果,这往往需要多个布局管理器配合使用;如下面的“猜数字游戏”界面,就是边界布局配合网格布局实现的效果。,整个窗体的内容面板采用边界布局,边界布局的南面嵌套1行3列的网格布局,JPanel提供面板组件,它是轻量级的容器组件;面板中可以添加其它组件,也可以设置布局,我们一般使用面板来实现布局嵌套;JP

17、anel类的构造方法有4种重载方式,以下是常用的几种:,JPanel的常用方法,JPanel(面板)的操作方式与Container(内容面板)很相似,以下是一些常用方法:,事件处理,对于采用了图形用户界面的程序来说,事件控制是非常重要的;到目前为止,我们编写的图形用户界面程序都仅仅只是完成了界面,而没有任何实际的功能,要实现相应的功能,必须进行事件处理;用户与GUI组件进行交互就会发生事件,如:按下一个按钮、用键盘输入一个字符、点击鼠标等等;当前我们要关注的并不是“事件是如何产生的”,而是讨论当发生事件后,我们应当“如何处理之”。,事件处理模型,Java中,事件处理的基本思路如下:一个源(事件

18、源)产生一个事件(事件对象)并把它送到监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;一个事件源必须注册监听器以便监听器可以接受关于一个特定事件的通知。,事件源与事件,当在一个图形用户界面点击鼠标或者按下键盘时,都是针对于具体组件而发生的动作,如:使用鼠标点击某个按钮;按下键盘向文本框输入内容等等;我们把动作所操纵的对象称为事件源,请注意:事件源一定是指某个组件;当针对于事件源发生动作时,就会产生一个事件。,监听器与监听器接口,针对每一类型的事件,都有与之相对应的监听器,用于监听事件的发生;在Java中,监听器由一系列接口来提供;实际上,事件监听器就

19、是实现了事件监听接口的类,监听器不断监听事件源的动作,当事件源产生一个事件后,监听器接收到事件源的通知,就调用特定的方法,以执行指定的动作。特定的事件监听器只对特定的事件感兴趣。,包,包中包含了一系列与事件处理相关的类和接口,其中包括:监听器接口,事件对象和事件适配器等;一般来说,编写图形用户界面程序都必须显式地导入此包;每种事件监听器接口都是以类似于XxxListener的形式来命名的,如:ActionListener、MouseListener、ItemListener等;,ActionListener接口,按钮被点击是图形编程中最普遍的事件,我们经常要处理;ActionListener被

20、称为活动监听器,一般用来监听按钮的点击事件;该接口中包含有一个抽象方法,原型如下:public void actionPerformed(ActionEvent ae);实现该监听器接口必须重写上面的方法。,import java.awt.*;import.*;import javax.swing.*;public class EventDemo extends JFrame implements ActionListener private JLabel lblMsg;private JButton btnClick;public EventDemo()lblMsg=new JLabel(请

21、点击下面的按钮.);btnClick=new JButton(请点击我);Container cpMe=getContentPane();cpMe.setLayout(new BorderLayout();cpMe.add(lblMsg,BorderLayout.CENTER);cpMe.add(btnClick,BorderLayout.SOUTH);setTitle(ActionListener Demo);btnClick.addActionListener(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,

22、200);setResizable(false);/设置不允许用户自行调整窗口大小 setVisible(true);public void actionPerformed(ActionEvent ae)lblMsg.setText(我被点击了!);/设置标签中的文本 public static void main(String args)new EventDemo();,import java.awt.*;import.*;import javax.swing.*;public class EventDemo extends JFrame private JLabel lblMsg;priv

23、ate JButton btnClick;public EventDemo()lblMsg=new JLabel(请点击下面的按钮.);btnClick=new JButton(请点击我);Container cpMe=getContentPane();cpMe.setLayout(new BorderLayout();cpMe.add(lblMsg,BorderLayout.CENTER);cpMe.add(btnClick,BorderLayout.SOUTH);setTitle(ActionListener Demo);btnClick.addActionListener(new MyL

24、istener();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setResizable(false);/设置不允许用户自行调整窗口大小 setVisible(true);class MyListener implements ActionListener public void actionPerformed(ActionEvent ae)/实现事件处理函数 lblMsg.setText(我被点击了!);public static void main(String args)new EventDemo();,

25、import java.awt.*;import.*;import javax.swing.*;public class EventDemo extends JFrame private JLabel lblMsg;private JButton btnClick1;private JButton btnClick2;public EventDemo()lblMsg=new JLabel(请点击下面的按钮.);btnClick1=new JButton(确定);btnClick2=new JButton(取消);Container cpMe=getContentPane();cpMe.setL

26、ayout(new FlowLayout();cpMe.add(lblMsg);cpMe.add(btnClick1);cpMe.add(btnClick2);setTitle(ActionListener Demo);btnClick1.addActionListener(new MyListener();btnClick2.addActionListener(new MyListener();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setResizable(false);/设置不允许用户自行调整窗口大小 setVisible(true);class MyListener implements ActionListener public void actionPerformed(ActionEvent ae)/实现事件处理函数 if(ae.getSource()=btnClick1)lblMsg.setText(确定!);if(ae.getSource()=btnClick2)lblMsg.setText(取消!);public static void main(String args)new EventDemo();,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号