GUI图形界面编程总结之Frame,Panel

GUI:Graphical User Interface,即图形用户界面,用于计算机与用户交互的一种方式

AWT:Abstract Window Toolkit,抽象窗口开发包。重量级组件。在Windows系统与Linux系统都可运行,但由于是调用操作系统实现的组件,在两个平台运行后并不是完全相同,可移植性一般。

位于java.awt包中。

Swing:在AWT基础上发展而来,轻量级组件,不依赖操作系统的支持,可移植性较好。

位于javax.swing包中。

java.AWT中主要的类:

image001

 

Component:封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等。其对象不能独立显示。

注意:组件包括基本组件与容器组件,容器组件用于容纳其他组件

Container:封装了容器组件类的通用的方法和属性

注意:容器组件不但能容纳基本组件,还能容纳其他容器组件

Window:顶级窗口,可独立存在

Panel: 确定一个四边形,可以添加其他组件(add()方法),但必须放在Window或Window的子类之中,才能显示出来。

Frame:可以添加其他组件(add()方法),具有标题和缩放角

Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入

TextComponent:允许编辑文本的组件的超类

TextField:创建文本框对象

TextArea:显示文本的多行区域。可以将它设置为允许编辑或只读

Button:标签按钮。当按下该按钮时,应用程序能执行某项动作

Label:显示一行只读文本。文本可由应用程序更改,但是用户不能直接对其进行编辑

Frame用法:

import java.awt.Color;
import java.awt.Frame;

/**
 * java GUI中Frame常用用法
 * 2014-4-14
 * @author Administrator
 *
 */
public class FrameDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //创建一个初始不可见的窗口f1(参数显示标题)
        Frame f1=new Frame("The first frame");
        ////设置窗口大小(参数是宽度及高度,单位是像素)
        f1.setSize(23,45);
        ////设置窗口的位置(参数是坐标)
        f1.setLocation(15,20);
        //调用类的成员来显示窗口颜色
        f1.setBackground(Color.blue);
        //设置是否可以调整大小
        f1.setResizable(true);
        //设置是否可见
        f1.setVisible(true);
        //创建一个初始不可见的窗口f2
        Frame f2=new Frame();
        //设置窗口位置大小
        f2.setBounds(70,140,50,200);
        f2.setBackground(Color.BLUE);
        //设置窗口标题
        f2.setTitle("The second frame");
        //设置是否可以调整大小
        f2.setResizable(false);
        //设置是否可见
        f2.setVisible(true);
        //获得f2窗口标题
        System.out.println(f2.getTitle());
    }

}

通过继承创建Frame窗口

import java.awt.*;
/**
 * java GUI中Frame类的继承使用
 * 2014-4-15
 * @author Administrator
 *
 */
public class FrameDemo2 {

    private static final Color BLUE = null;
    private static final Color YELLOW = null;
    private static final Color RED = null;
    private static final Color GREEN = null;

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //Color类的常量大小写用法一致,但建议用大写,为了符合规范
        MyFrame f1=new MyFrame(100,100,200,200,Color.blue,"first");
        MyFrame f2=new MyFrame(300,100,200,200,Color.green,"second");
        MyFrame f3=new MyFrame(100,300,200,200,Color.orange,"third");
        MyFrame f4=new MyFrame(300,300,200,200,Color.CYAN,"Fourth");
    }
}


class MyFrame extends Frame{
    MyFrame(int x,int y,int a,int b,Color c,String s){
        //创建窗口的几个主要元素:位置参数,大小,颜色,布局管理器,
        //s是否可以调整大小,是否可见
        super("This is my"+s+"frame");
        setBounds(x,y,a,b);
        setBackground(c);
        setResizable(true);
        //布局管理器
        setLayout(null);
        setVisible(true);
    }
}

创建嵌套窗口,Panel窗口嵌套在Frame中

import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
/**
 * java GUI Panel用法
 * 2014-4-15
 * @author Administrator
 *
 */

public class PanelDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Frame f=new Frame("Frame with Panel");
        f.setBounds(300, 300, 500, 500);
        f.setBackground(Color.LIGHT_GRAY);
        f.setResizable(true);
        f.setLayout(null);
        Panel p=new Panel(null);
        //Panel窗口的位置参数是以Frame窗口左上角为基准
        p.setBounds(50, 50,400, 400);
        //通过Color类三原色构造方法设置窗口颜色
        p.setBackground(new Color(0,0,254));
        //将Panel窗口添加到Frame中
        f.add(p);
        f.setVisible(true);
        
        
        
        
    }

}

继承的写法:

import java.awt.*;

public class TestMultiPanel {
    public static void main(String args[]) {
        new MyFrame2("MyFrameWithPanel",300,300,400,300);
    }
}


class MyFrame2 extends Frame{
    private Panel p1,p2,p3,p4;
    MyFrame2(String s,int x,int y,int w,int h){
        super(s);
        setLayout(null);
        p1 = new Panel(null); p2 = new Panel(null);
        p3 = new Panel(null); p4 = new Panel(null);
        p1.setBounds(0,0,w/2,h/2);
        p2.setBounds(0,h/2,w/2,h/2);
        p3.setBounds(w/2,0,w/2,h/2);
        p4.setBounds(w/2,h/2,w/2,h/2);
        p1.setBackground(Color.BLUE);
        p2.setBackground(Color.GREEN);
        p3.setBackground(Color.YELLOW);
        p4.setBackground(Color.MAGENTA);
        add(p1);add(p2);add(p3);add(p4);
        setBounds(x,y,w,h);
        setVisible(true);
    }
}

参考资料:尚学堂马士兵视频教程。

posted @ 2014-04-15 16:34  shangshicc  阅读(3555)  评论(0编辑  收藏  举报