Java_GUI总结

 转至:http://sllereak.blog.163.com/blog

 

--GUI
 *Graphics User Inerface--图形用户接口
--AWT
 *Abstract Windows Toolkit--抽象窗口工具(抽象是只跨平台)
--AWT结构
                 |--Frame(传统的窗体)
              | -----window(可以作为一个单元独立显示)
              |         |--Dialog(弹出的窗体)
     --Contaner(容器)
     |         | -----panel(只能作为一个容器的一部份,显示在window里面),比如applet(已经过时)
 *Component--组件
     |
     |
     --Button,Label等不能作为容器的组件
     
--布局管理器
 *BorderLayout:(frame的默认管理器)划分为东西南北中五个区域
  *添加的时候需要指定添加的区域,不指定默认为中,多次添加到一个区域会覆盖
 *FlowLayout:(panel的默认管理器) 流水式按个排列,默认为居中,也可以设置成左对齐
 *GridLayout:把容器分为指定的格子,划分方式通过构造函数决定
 *可以设置为null,这就可以手动设置布局,如果没有设置成null,会取默认值,任何手动设置都会视为无效
 
--java事件监听模型(观察者设计模式)
 看例子
--------------------------------时间参数
public class MyEvent {
 public int id;
 public String newName;
 public String oldName;
 public MyEvent(int id,String oldName,String newName){
  this.id=id;
  this.newName=newName;
  this.oldName=oldName;
 }
}
--------------------------------时间监听器
public interface MyListner {
 void doSomeThing(MyEvent e);
}
--------------------------------事件源
public class MyClass {
 int id;
 String name;
 private MyListner listner;
 public MyClass(int id,String name){
  this.id=id;
  this.name=name;
 }
 public void changeName(String name){//事件触发
  if(listner!=null){
   MyEvent e=new MyEvent(id,this.name,name);
   listner.doSomeThing(e);
  }
  this.name=name;
 }
 public void AddLisner(MyListner listner){
  this.listner=listner;
 }
}
--------------------------------

public class App {
 public static void main(String[] args){
  MyClass my=new MyClass(10,"zhangsan");
  System.out.println(my.name);
  my.AddLisner(new MyListner(){//事件注册
   public void doSomeThing(MyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("旧:"+e.oldName);
    System.out.println("新:"+e.newName);
   }
  });
  my.changeName("lisi");
 }
}

-------如果接口中方法很多一般api都提供事件监听的Adapter类--------

--内部类--一个类的成员也是一个类
 好处
  *方便的访问外部类的成员变量和成员方法
  *隐藏该内部类不被其他地方访问
--局部类
 *申明在方法中的类,基本上用不上,所以不用研究
 
--每一个容器都有paint()方法,并且是这个容器.setVisable(true)的时候自动被调用(需要重画的时候自动被调用,可以显式的调用容器的.repaint()方法执行从画)
*repaint()方法的实质:repaint()-->update()-->paint()--双缓冲方式绘制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值