java GUI图形用户界面

本文介绍了Java中AWT和Swing两种GUI组件的特点与区别,包括早期版本的AWT组件和较新的Swing组件,并提供了JDialog对话框、Applet小应用程序的使用示例,以及如何使用Graphics类进行绘图。

一、Swing与AWT

1、早期版本的AWT组件:

Ø      在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类

Ø      大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweight components)

Ø      没有弹性、缺乏效率

2、较新的Swing组件

Ø      在javax.swing包里,类的名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类

Ø      Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代

Ø      完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components)

Ø      可提供更丰富的视觉感受,被越来越多地使用。

二、JDialog  实现一个二级窗口(对话框)

 

 

 

 

  

 

 

 

 

public void setModal(boolean b):指定此 dialog 是否应该是有模式的。

 

采用内部类更方便,程序可改为:

 


 

三、Applet小应用程序: 在浏览器窗口中实现一个Applet显示区域

1、     特点:运行于支持JavaWeb浏览器中;浏览器的解释器把字节码转换成和机器匹配的指令,在网页中执行小程序;AppletApplication的差别:运行环境的不同,小应用程序总是放在Web浏览器的图形用户界面中。


2、     Applet程序的结构模式:

import java.applet.Applet;
public class 
类名
extends Applet
{
   
……

(或继承JApplet Japplet属于javax.swing包)

3、五个事件驱动执行的方法:

public void init() {}//初始化方法:Applet的字节码文件从WWW服务器端下载后,浏览器将创建一个Applet类的实例并调用它从Applet类那里继承来的init()方法

public void start() {}//开始执行方法:执行init()方法后,接着将自动调用start()方法启动运行该实例的主流程

public void paint( Graphics g ) {}//绘画方法:当Applet初启动后或浏览器窗口改变时或Applet的其他相关方法被调用时系统将调用paint()重新描绘自己的界面。

public void stop() {}//停止执行方法:当用户浏览其他WWW页或切换到其他系统时,系统将调用该方法

public void destroy(){} //退出方法:当用户退出浏览器时,系统将调用该方法

 

例:

import java.awt.Graphics;

import javax.swing.JApplet;

public class Ex9_1 extends JApplet{ 

    public void paint(Graphics g) { //重载JApplet类的paint方法

              //参数是Graphics类的对象,是由浏览器传递过来的

         super.paint(g); //调用其超类JApplet类的paint方法

         g.drawString("This is a Java Applet!",25,25);

     }

 }  

 

4、HTML中applet标记的使用

<APPLET

    [ARCHIVE  = archiveList ]

    [CODEBASE = codebaseURL]

    CODE = appletFile

    [ALT = alternateText]

    [NAME = appletInstanceName]

    WIDTH = pixels HEIGHT = pixels

    [ALIGN = alignment]

    [VSPACE = pixels] [HSPACE = pixels]

    [< PARAM NAME = appletParameter1 VALUE = value >]

    [< PARAM NAME = appletParameter2 VALUE = value >]

    . . .

    [alternateHTML]

</APPLET>  

例1

 

<html>

<applet code="Ex9_1.class" width="300" height="45">

</applet>

</html>

 

5、浏览Applet,即浏览嵌入有Applet的html文件:

     用Ie打开html文件或用JDK工具:appletviewer html文件

四、使用Graphics类绘图

 

publicclass Ex9_2 extends JFrame {

    public Ex9_2()   //构造方法,创建窗口

   {

    

      super( "演示字体、颜色、绘图" );     //调用基类构造方法,设置窗口标题

      setSize( 480, 250 );                 //设置窗口大小

      setVisible( true );                  //显示窗口

   }

 

   publicvoid paint( Graphics g )        //

   {

      // super.paint( g );  // call superclass's paint method

 

      g.setFont( new Font( "SansSerif", Font.BOLD, 12 ) ); //设置字体

      g.setColor(Color.blue);                             //设置颜色

      g.drawString("字体ScanSerif,粗体,12号,蓝色",20,50);     //绘制字符串

     

      g.setFont( new Font( "Serif", Font.ITALIC, 14 ) );

      g.setColor(new Color(255,0,0));

      g.drawString( " 字体Serif,斜体,14号,红色", 250, 50 );

     

      g.drawLine(20,60,460,60);                      //绘制直线

     

      g.setColor(Color.green);

      g.drawRect(20,70,100,50);                     //绘制空心矩形

      g.fillRect(130,70,100,50);                    //绘制实心矩形

     

      g.setColor(Color.yellow);

      g.drawRoundRect(240,70,100,50,50,50);          //绘制空心圆角矩形

      g.fillRoundRect(350,70,100,50,50,50);          //绘制实心圆角矩形

      

      g.setColor(Color.cyan);

      g.draw3DRect(20,130,100,50,true);              //绘制有三维突起效果的空心矩形

      g.fill3DRect(130,130,100,50,false);            //绘制有三维凹陷效果的实心矩形

     

      g.setColor(Color.pink);

      g.drawOval(240,130,100,50);                    //绘制空心椭圆

      g.fillOval(350,130,100,50);                    //绘制实心椭圆

      g.setColor(new Color(0,120,20));

      g.drawArc(20,190,100,50,0,90);                 //绘制一段圆弧

      g.fillArc(130,190,100,50,0,90);       //绘制扇形,扇形由圆弧及两半径圈定

     

      g.setColor(Color.black);

      int xValues[]={250,280,290,300,330,310,320,290,260,270};

      int yValues[]={210,210,190,210,210,220,230,220,230,220};

      g.drawPolygon(xValues,yValues,10);             //绘制空心多边形

     

      int xValues2[]={360,390,400,410,440,420,430,400,370,380};

      g.fillPolygon(xValues2,yValues,10);            //绘制实心多边形

   } // end method paint

 

   publicstaticvoid main( String args[] )

   {     

      JFrame.setDefaultLookAndFeelDecorated(true);  //设置窗口的外观感觉为Java默认

      Ex9_2 application = new Ex9_2();            //创建Ex9_2类的一个实例

      application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

   }

}

 

 

 

五、处理鼠标事件

事件源

事件对象

事件监听器

JFrame

MouseEvent

WindowEvent

MouseListener

WindowListener

MouseListener监听器必须实现如上5个方法:

(1)public class Lx7_3 extends JApplet implements MouseListener

(2)this.addMouseListener(this);

3publicvoid mouseClicked(MouseEvent e) {

       // TODO Auto-generated method stub

      

       mx=e.getX();my=e.getY();

       repaint();

      

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sujinfa8330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值