黑马程序员——高新技术---Java基础-GUI编程

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

GraphicalUserInterface(图形用户接口)

用图形的方式,来显示计算机操作的界面,这样更方便更直观。

 

Java为GUI提供的对象都存在java.awt和javax.swing两个包中。


java.awt:

1,AbstractWindow TookKit (抽象窗口工具包)

2,早期存在的

3,它内部的类,需要调用本地接口(需要调用操作系统的本地函数)

4,属于重量级的包

5,因为它需要调用本地系统的资源,所以awt包下的组件不是跨平台的

 

java.swing:

1.awt包的基础上建立起来的;它底层有很多组件会使用awt包下的组件;

2.它的组件是纯Java编写的

3.属于"轻量级"的包;

4.由于是纯Java编写,所以是"跨平台"

 

体系图: 


 

Component(抽象类):所有非"菜单"组件的超类。

|--组件:

|--Button:按钮

|--Label:标签

|--CheckBox(复选框)

|--TextComponent

|--TextArea(文本域)

|--TextField(文本框)

|--容器:可以装其他组件的组件

|--Container

|--Window(窗口):没有边框和菜单窗口

|--Frame(窗口)有标题栏和边框的窗口

|--Dialog(对话框)

 

|--Panel(面板)

 

 

 

HelloWorld窗体案例:

步骤:

1,实例化一个窗体:Frame

构造方法:

Frame():构造一个最初不可见的 Frame 新实例()。

 

Frame(String title):构造一个新的、最初不可见的、具有指定标题的 Frame对象。

 

2,设置窗体:

1),位置:

voidsetLocation(int x,int y); 

void setLoction(Point p);(将上面的x,y封装成一个Point对象,效果是一样的)

2),窗体大小:

voidsetSize(int width,int height);

void setDimension(Dimension d)();(将上面的width,height封装成一个Dimension对象,效果是一样的)

3)窗体标题;

void setTitle(String title)

 

一次性设置窗体的大小和位置:

void setBounds(int x,int y,int width,int height)

void setBounds(Rectangle r) (Rectangle类中封装大小和位置)

 

4),设置窗体布局:

setLayout(LayoutManager mgr)设置此容器的布局管理器。

3设置窗体可见:

public voidsetVisible(boolean b)

 

 

事件处理机制:

1,事件源:可能发生事件的组件:

窗体:Frame

 

2,可能发生什么事?

1),一些组件可能会发生的事,都是已经定义好的。

2),将已经定义好的这些事件进行分类,都分别定义在某些XxxxListener

例如:窗口的关闭事件:

选择;WindowListener(接口)

窗口关闭事件:

void WindowClosingWindowEvent e

 

3,当事件发生时,我们要做什么?

1),自定义一个类,实现我们要关注的事件接口

2),重写我们希望处理的方法:

例如:

编写类,实现WindowListener接口

重写WindowClosing()方法

 

4,将事件源与事件的处理方式进行关联:

1),一般调用组件的addXxxListener();

例如:事件源:Frame

事件:WindowListener

那么就调用FrameaddWindowListener(new事件处理的类()这个可以用匿名类部类的形式写

 

 

适配器模式:

有些接口中有很多的方法,例如IA

我们子类只需要一部分方法,此时去实现IA接口,那么不得不去实现接口中的所有抽象方法。

这样,其他不需要的方法就会造成代码的可读性降低,例如SubA1类。

这时可以定义一个抽象类,它实现IA接口,并全部重写IA的抽象方法,我们子类去继承抽象类,去重写你想要的抽象类的方法。

 

适配器优化窗体事件处理方式:具体代码:

f.addWindowListener(new WindowAdapter() {

@Override

publicvoid windowClosing(WindowEvent e) {

System.exit(0);

}

});

 

 

按钮:Button()

构造方法:

Button()

         构造一个标签字符串为空的按钮。

Button(String label)

         构造一个带指定标签的按钮。

 

将按钮组件添加到窗口组件:

add.(Componnet com);

 

为按钮添加事件:

bu.addActionListener(newActionListener() {

@Override

publicvoid actionPerformed(ActionEvent e) {

System.out.println("你再点试试");

}

});

 

布局管理器:

BorderLayout (边框布局管理器)例如:Eclipse的主界面,Frame的默认布局管理器

CardLayout(卡片布局管理器)例如:播放幻灯片时

FlowLayout(流式布局管理器)例如:菜单栏

GridLayout(方格布局管理器)例如计算器数字键

GridBaglayout(更高级的方格布局管理器)例如计算器的“等于”按钮

可以将布局管理器设为null

frame.setLayout(null);

表示:不使用布局管理器,使用组件的大小,位置信息直接固定组件,当窗体大小被改变时,内部组件不会随着改变。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值