为了账号安全,请及时绑定邮箱和手机立即绑定

java学习之图形用户接口AWT组件部分

标签:
Java

记录学习Java私塾Java视频培训教程中级-9 图形用户接口AWT组件部分
学习视频资源分享:
地址:http://pan.baidu.com/s/1eSDiZAi
密码:lvy6
PS:视频的画质音质不及大型网站,但是内容讲的还算到位(讲的有点慢)
什么是GUI
GUI:Graphical User Interface ,图形用户接口,即人机交互图形化用户界面,就是屏幕产品的视觉体验和互动操作部分。经常读作“goo-ee”,或者字母“G-U-I”,或者完整的英文。
AWT:(Abstract Window Toolkit:抽象窗口工具箱),包括了丰富的图形、用户界面组件和布局管理器的支持,还有对界面事件的处理机制等。
Component(组件)就是,具有图形界面,并能完成一定功能的封装体。
Container(容器)就是,用于包含其它组件的组件。
Container是Component的一个抽象子类,它允许其它组件被嵌套在里面。这些组件也可以是允许其它组件被嵌套在里面的容器,于是就创建了一个完整的层次结构。在屏幕上布置GUI组件,容器是很有用的。Panel是Container的最简单的类。Container的另一个子类是Window。
Window是Java.awt.Window.的对象。Window是现实屏上独立的本机窗口,它独立于其它容器。Window有两种形式:Frame(框架)和Dialog(对话框)。
Frame和Dialog是Window的子类。Frame是一个带有标题和缩放角的窗口。对话没有菜单条。尽管它能移动,但它不能缩放。
Panel是Java.awt.Panel的对象。Panel包含在另一个容器中,或是在Web浏览器的窗口中。Panel确定一个四边形,其它组件可以放入其中。Panel必须放在Window之中(或Window的子类中)以便能显示出来。
PS:
1:容器不但能容纳组件,还能容纳其它容器,这一事件对于建立复杂的布局是关键的,也是基本的。
2.a:界面是“画”出来的
2.b:界面是“叠加”出来的,如果从侧面看,可以分做很多层
2.c:常见的界面组合方式是:组件放在Panel里面,Panel放在Frame上。也就是说,通常用Panel来进行界面的组合,一个Panel就是一个界面,那么界面的切换就相当于切换Frame里面的Panel。

Frame的使用
Frame是Window的一个子类,它是带有标题和缩放角的窗口。它继承与Java.awt.Container,因此,可以用add()方法来给框架添加组件。
框架的缺省布局管理器就是BorderLayout。它可以用setLayout()方法来改变。
框架类中的构造程序Frame(String)用由String规定的标题来创建一个新的不可见的框架对象。当它还处于不可见状态时,将所有组件添加到框架中。
简单的框架示例代码:

import java.awt.*;  
public class MyFrame extends Frame{  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();  
        mf.setSize(500, 500);//设置大小  
        mf.setBackground(Color.blue);//设置背景颜色  
        mf.setLocation(100, 100);//设置左上角的点的坐标  

        mf.setVisible(true);//设置为可见  
    }  

}  

PS:在框架显示在屏幕上之前,必须做成可见的(setVisible(true)),而且其大小是确定的(通过调用setSize()方法或pack()方法)

Panel的使用
像Frames一样,Panels提供空间来链接任何GUI组件,包括其它面板。每个面板都可以有它自己的布局管理程序。
一旦一个面板对象被创建,为了能看得见,它必须添加到窗口或框架对象上。用Container类中的add()方法可以做到这一点。
下面的程序创建了一个小的黑色面板,并将它加到一个框架对象上:

import java.awt.*;  

public class MyFrame extends Frame{  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();  
        mf.setSize(500, 500);//设置大小  
        mf.setBackground(Color.blue);//设置背景颜色  
        mf.setLocation(100, 100);//设置左上角的点的坐标  

        Panel p = new Panel();//创建一个面板对象  

        p.setBackground(Color.black);//设置背景色(该颜色将覆盖原本的蓝色)  

        mf.add(p);//将面板放到框架中  

//      Panel p2 = new Panel();//再创建一个面板  
//      p2.setBackground(Color.gray);//设置背景色(该面板加入框架后,该颜色又将覆盖原有颜色)  
//      mf.add(p2);  

        mf.setVisible(true);//设置可见  
    }  

}  

Button组件的使用:

import java.awt.*;  
public class MyFrame extends Frame{  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();  
        mf.setSize(500, 500);//设置大小  
//      mf.pack();  
        mf.setBackground(Color.blue);//设置背景颜色  
        mf.setLocation(100, 100);//设置左上角的点的坐标  

        Panel p = new Panel();//创建一个面板对象  

        p.setBackground(Color.black);//设置背景色(该颜色将覆盖原本的蓝色)  

        Button b = new Button("Test");//创建一个Button组件,显示文本"test"  

        b.setBackground(Color.red);//设置Button的颜色  

        p.add(b);//将Button组件放到面板上  

        mf.add(p);//将面板放到框架中  

        mf.setVisible(true);//设置可见  
    }  

}  

组件放到面板上,面板放到框架上。
用组件实现功能~~~
观察代码不难发现,做一个界面无非是三步走:
step1:初始化对象(组件、面板或框架)
step2:设置属性(setBackground()、setSize()等等还有很多)
step3:放入容器(组件放入面板,面板放入框架,框架设置可见)

根据以上规则在设置其他组件不过是依葫芦画瓢:

import java.awt.*;  

public class MyFrame extends Frame{  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();//创建框架  step1  of frame  

        mf.setSize(500, 500);//设置大小        -- step2  of frame  
        mf.setBackground(Color.blue);//设置背景颜色  
        mf.setLocation(100, 100);//设置左上角的点的坐标  

        Panel p = new Panel();//创建一个面板对象 --step1  of panel  

        p.setBackground(Color.black);//设置背景色(该颜色将覆盖原本的蓝色) --step2 of panel  

        Button b = new Button("Test");//创建一个Button组件,显示文本"test"  --step1 of button  

        b.setBackground(Color.red);//设置Button的颜色   --step2  of button  

        p.add(b);//将Button组件放到面板上   --step3  of button  

        /*在这里可以添加其他组件*/  
        //比如再整一个TextField  
        TextField tf = new TextField("Hello World一万年");//step1  
        tf.setSize(100, 200);//step2  
        tf.setBackground(Color.white);  
        p.add(tf);//step3  

        mf.add(p);//将面板放到框架中    --step3  of panel  

        mf.setVisible(true);//设置可见 step3 of frame  
    }  
}  

图片描述

而后再整个画布和对话框的功能:

import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  

import javax.swing.*;  
import javax.swing.border.Border;  

public class MyFrame extends Frame implements ActionListener{  
    static Dialog d = null;  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();//创建框架  step1  of frame  
        mf.setSize(500, 500);//设置窗口大小        -- step2  of frame  
        mf.setBackground(Color.blue);//设置窗口的背景颜色  
        mf.setLocation(100, 100);//设置窗口左上角的点的坐标  

        Panel p = new Panel();//创建一个面板对象 --step1  of panel  
        p.setBackground(Color.black);//设置背景色(该颜色将覆盖原本的蓝色) --step2 of panel  

        Button b = new Button("Test");//创建一个Button组件,显示文本"test"  --step1 of button  
        b.addActionListener(new MyFrame());//动态事件监听  
        b.setSize(100,100);  
        b.setBackground(Color.red);//设置Button的颜色   --step2  of button  
        p.add(b);//将Button组件放到面板上   --step3  of button    
        /*在这里可以添加其他组件*/  
        //比如再整一个TextField  
        TextField tf = new TextField("Hello World一万年");//step1  
        tf.setSize(100, 200);//step2  
        tf.setBackground(Color.white);  
        p.add(tf);//step3  

        //再整一个画布  
        Canvas c1 = new MyCanvas();// step1  
        c1.setSize(100,100);//step2  
        c1.setBackground(Color.white);  
        p.add(c1);//step3  

        mf.add(p);//将面板放到框架中    --step3  of panel  
        mf.setVisible(true);//设置可见 step3 of frame  

        //再整一个对话框  
        //Dialog:注意Dialog是和Frame同等级的  
        d = new Dialog(mf,"Dialog",false);//显示true时将使对话框屏蔽其父,即当d可见是mf无法操作(即模式对话框)  
        d.setSize(200, 200);  
        d.add(new Label("Hello Wrorld~~~"));  
        /** 
         * 对话框在创建时通常是不可见的。 
         * 通常在对按下按钮等用户输入作出反应时才显示对话框 
         */  
    }  
    //这里设置监听事件,当事件发生才使对话框dialog可见  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // TODO Auto-generated method stub  
        d.setVisible(true);  
    }  
}  
class MyCanvas extends Canvas{  
    public void paint (Graphics g){  
        g.setColor(Color.yellow);//设置画笔颜色  
        g.drawLine(10, 10, 20, 20);//画一条线  

        g.setColor(Color.cyan);//重新设置画笔颜色  
        g.draw3DRect(20, 20, 20, 20, true);//画一个3D矩形  

        g.setColor(Color.red);  
        g.drawString("Hello World~~~", 10, 60);//画一个字符串  
    }  

}  

点击test的button后出现效果:
图片描述

FileDialog:
filedialog也是对话框,但是很神奇的是,我没有给他添加什么组件,它自动就是打开一个神奇的界面:
看代码:

import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  

import javax.swing.*;  
import javax.swing.border.Border;  

public class MyFrame extends Frame implements ActionListener{  
    static FileDialog d = null;  
    public static void main(String[] args) {  
        MyFrame mf = new MyFrame();//创建框架  step1  of frame  
        mf.setSize(500, 500);//设置窗口大小        -- step2  of frame  
        mf.setBackground(Color.blue);//设置窗口的背景颜色  
        mf.setLocation(100, 100);//设置窗口左上角的点的坐标  

        Panel p = new Panel();//创建一个面板对象 --step1  of panel  
        p.setBackground(Color.black);//设置背景色(该颜色将覆盖原本的蓝色) --step2 of panel  

        Button b = new Button("Test");//创建一个Button组件,显示文本"test"  --step1 of button  
        b.addActionListener(new MyFrame());//动态事件监听  
        b.setSize(100,100);  
        b.setBackground(Color.red);//设置Button的颜色   --step2  of button  
        p.add(b);//将Button组件放到面板上   --step3  of button    
        /*在这里可以添加其他组件*/  
        //比如再整一个TextField  
        TextField tf = new TextField("Hello World一万年");//step1  
        tf.setSize(100, 200);//step2  
        tf.setBackground(Color.white);  
        p.add(tf);//step3  

        //再整一个画布  
        Canvas c1 = new MyCanvas();// step1  
        c1.setSize(100,100);//step2  
        c1.setBackground(Color.white);  
        p.add(c1);//step3  

        mf.add(p);//将面板放到框架中    --step3  of panel  
        mf.setVisible(true);//设置可见 step3 of frame  

        //再整一个对话框  
        //Dialog:注意Dialog是和Frame同等级的  
        d = new FileDialog(mf,"Dialog");//FileDialog默认为true不必设置  
//      d.setSize(200, 200);  
//      d.add(new Label("Hello Wrorld~~~"));  
        d.pack();  
        /** 
         * 对话框在创建时通常是不可见的。 
         * 通常在对按下按钮等用户输入作出反应时才显示对话框 
         */  
    }  
    //这里设置监听事件,当事件发生才使对话框dialog可见  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // TODO Auto-generated method stub  
        d.setVisible(true);  
    }  
}  
class MyCanvas extends Canvas{  
    public void paint (Graphics g){  
        g.setColor(Color.yellow);//设置画笔颜色  
        g.drawLine(10, 10, 20, 20);//画一条线  

        g.setColor(Color.cyan);//重新设置画笔颜色  
        g.draw3DRect(20, 20, 20, 20, true);//画一个3D矩形  

        g.setColor(Color.red);  
        g.drawString("Hello World~~~", 10, 60);//画一个字符串  
    }  

}  

点击test的button时会出现这样的效果:

图片描述

点击查看更多内容
20人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消