欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java GUI界面初步入门示例【AWT包】

程序员文章站 2022-03-28 16:13:29
本文实例讲述了java gui界面。分享给大家供大家参考,具体如下: java不太擅长做图形界面; awt是一种较老的包,最新的是swing包,由于其包内调用了一部分的操作系统的内...

本文实例讲述了java gui界面。分享给大家供大家参考,具体如下:

java不太擅长做图形界面;

awt是一种较老的包,最新的是swing包,由于其包内调用了一部分的操作系统的内容,所以无法做到完全的跨平台。

对于每一个图形元素都是一个component类,其包含container,container是一个component,同时他又作为component的一个容器类,又可以存放component。在container中还有window和panel两种类,其中window类是独立的,可以直接显示,而panel类不独立,不能直接显示,必须依附于window类进行显示。在window下面还有frame和dialog,panel下面有applet,其中frame是一个窗口,而dialog是一个对话框,对于对话框有必须处理和不必须处理两种。

几个frame/panel实例

instance1:

添加几个基本的元素,构造方法一:建立一个frame对象

import java.awt.*;
public class testgui {
    public static void main(string[] args) {
        frame f = new frame("my frame") ;
        f.setbounds(30, 30, 300, 300);
        f.setbackground(color.blue);
        f.setresizable(true);
        f.setvisible(true);
    }
}

注:在方法中,location用来设置图形的位置,size用来设置图形的大小,而用bounds可以直接设置其位置和大小

instance2:

构造方法二,通过建立一个新的类进行创建,其中该类要继承frame

import java.awt.color;
import java.awt.frame;
public class testframe2 {
    public static void main(string[] args) throws exception{
        new myframe1(100,100,200,200,color.blue);
        new myframe1(100,300,200,200,color.cyan);
        new myframe1(300,100,200,200,color.gray);
        new myframe1(300,300,200,200,color.magenta);
    }
}
class myframe1 extends frame{
    static int d = 0;
    myframe1(int x,int y,int w,int z,color c){
        super("myframe " + ++d);
//        settitle("myframe " + ++d);
        setbounds(x,y,w,z);
        setbackground(c);
        setresizable(true);
        setvisible(true);
    }
}

注:可以直接new一个对象而不给其指定名称,这样已经在内存里有了空间但是没有名称调用,

对于myframe其继承自frame用其构造方法给图形起一个名字,也可以用settitle方法,但是用super()时必须要求变量为静态的。(??)

panel:

instance 3:

import java.awt.*;
public class testpanel {
    public static void main(string[] args) {
        frame f1 = new frame("myframe 1");
        panel p1 = new panel();
        f1.setbounds(300, 300, 600, 600);
        f1.setbackground(color.blue);
        f1.setlayout(null);
        p1.setbounds(100, 100, 200, 200);
        p1.setbackground(color.dark_gray);
        f1.add(p1);
        f1.setresizable(true);
        p1.setvisible(true);
        f1.setvisible(true);
    }
}

注:对于panel,由于其不能独立的显示所以必须要把它加入到一个window类中进行显示,

其和window类一样,必须调用其setvisible方法才能看的见。此外,这里setlayout参数是null,对应的对window进行拖动的时候,其内部的panel是不变的。

instance 4:

import java.awt.*;
public class testpanel2 {
    public static void main(string[] args) {
        new myframe4("myframe h",300,300,400,400);
    }
}
class myframe4 extends frame{
//    private penal p1,p2,p3,p4; 
    myframe4(string s, int x,int y,int w,int h){
        super(s);
        setbounds(x,y,w,h);
        setbackground(color.blue);
        setlayout(null);
        setresizable(true);
        setvisible(true);
        panel p1 = new panel(null); panel p2 = new panel(null);
        panel p3 = new panel(null); panel p4 = new panel(null);
        p1.setbounds(0, 0, w/2, h/2); p3.setbounds(w/2, 0, w/2, h/2);
        p2.setbounds(0, h/2, w/2, h/2); p4.setbounds(w/2, h/2,w/2, h/2);
        add(p1); add(p2); add(p3); add(p4);
        p1.setbackground(color.cyan);
        p2.setbackground(color.gray);
        p3.setbackground(color.green);
        p4.setbackground(color.red);
        p1.setvisible(true);
        p2.setvisible(true);
        p3.setvisible(true);
        p4.setvisible(true);
    }
}