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

记录学习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

}

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

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后出现效果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

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时会出现这样的效果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值