Java

Java第九章 用户图形界面

9.1 Applet 概述

一种嵌入HTML文档中的Java程序 。

与Application相比,Applet具有明显的优点

  1. Web浏览器提供了运行Applet所需要的许多功能
  2. Applet是在运行时通过网络从服务器端下载的,因而便于软件的发布和及时更新

Applet也有其局限性

  1. 不能在客户机上读写当地文件
  2. 不能连接除它所在的服务器以外的其它机器

9.2 JApplet类

一个applet程序需要继承 javax.swing包中的JApplet类

import java.awt.Graphics;
import javax.swing.JApplet; 
public class MyApplet extends JApplet{  
    public void paint(Graphics g) { //重载JApplet类的paint方法
              //参数是Graphics类的对象,是由浏览器传递过来的
         super.paint(g); //调用其超类JApplet类的paint方法
         g.drawString("This is a Java Applet!",25,25); 
     }
 } 

JApplet类提供了applet在浏览器中运行需要具备的特定方法

  • 浏览器载入时,要依次运行init、start、paint方法
  • 离开浏览器页面时,执行stop
  • 退出浏览器时,执行destroy
public void start()init方法执行结束之后,自动调用这个方法。另外,当浏览器用户在访问另一个网址之后重新返回applet所在的HTML时,将再次调用start方法
public void paint(Graphics g)start方法启动后调用此方法,另外每次需要重绘applet也将调用该方法。程序通常不直接调用paint
public void repaint()在响应用户和Applet的交互时经常要用到。通常只是调用,而不重写这个方法。对于轻量级组件,它调用组件的paint方法,对重量级组件它调用组件的update方法,由update调用paint
public void stop()用户离开Applet所在的HTML页时调用该方法,它执行挂起Applet所需的所有任务,例如停止动画和线程
public void destroy()用户关闭浏览器窗口Applet将从内存中移走的时候调用该方法

9.3 绘图

import java.awt.* 导入字体 颜色 图形包

9.4 Swing基础

图形界面设计的一般步骤

  1. 选择容器。
  2. 确定布局。
  3. 向容器中添加组件。
  4. 进行事件处理。
应用Swing组件的Applet
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingApplet extends JApplet{
   public void init() {
      Container contentPane=getContentPane();
      contentPane.setLayout(new GridLayout(2,1));
      JButton button=new JButton("Click me");
      final JLabel label=new JLabel();
      contentPane.add(button);
      contentPane.add(label);
      button.addActionListener( new ActionListener(){
         public void actionPerformed(ActionEvent event) {
           String information=JOptionPane.showInputDialog("请输入一串字符");
           label.setText(information);
          }  }  );//创建监听器语句结束
  }//init方法结束  
}
把JApplet换成JFrame,将例9-4的程序改为Application
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class SwingApplication {
    public static void main(String[] args){
        JFrame f=new JFrame(“Simple Swing Application”);         
        Container contentPane=f.getContentPane();
        contentPane.setLayout(new GridLayout(2,1));
        JButton button=new JButton("Click me");
         final JLabel label=new JLabel();
         contentPane.add(button);//添加按钮
         contentPane.add(label);//添加标签
        button.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent event) {                    
               String information=JOptionPane.showInputDialog("请输入一串字符");
               label.setText(information);
            }  }  );
        f.setSize(200,100);//设置大小
        f.show();//显示
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

9.5 Swing的特点和概念

顶层容器 Swing提供三个顶层容器的类

  1. JFrame 实现单个主窗口
  2. JDialog  实现一个二级窗口(对话框)
  3. JApplet 在浏览器窗口中实现一个applet显示区域
image 36

Application和Applet的区别

比较项目AppletApplication
程序结构init()初始设置;
start()开始运行;
stop()停止;
destory()内存清理;
paint()绘图处理;
由main()开始
在构造函数中初始化设置
开发工具javac编译,appletviewer或浏览器查看javac编译 java运行字节码文件
运行环境浏览器上JRE中
传播方式HTML格式网页或APP传送和JRE发布
图形界面必要非必要
变量输入嵌入Web文件中命令行输入
应用范围网页服务器