发表于: 2018-01-09 22:57:28

1 494


今天完成的事情

讲了小课堂,Java中的AWT

图形用户界面(Graphics User Interface,GUI),是指为程序提供直观的图形界面,最终用户通过鼠标拖动,单击等动作就可以操作整个应用。(Windows之所以广为人知,其最初的吸引力就是来自于它所提供的图形用户界面)

Java使用AWT和Swing类完成图形用户界面编程,AWT的全称是抽象窗口工具集,它是Sun最早提供的GUI库,提供了一些基本的功能,但功能比较有限,所以后来又提供了Swing库
Swing库替代了绝大部分的AWT组件,但需要使用AWT的事件处理机制
通过使用AWT和Swing提供的图形界面组件库,Java的图形界面编程可以变得比较简单,程序只要依次创建所需的图形组件,并以合适的方式将这些组件组织在一起,就可以开发出不错的用户界面


容器
任何窗口都可被分解成一个空的容器,容器里盛装了大量的基本组件,通过设置这些基本组件的大小,位置等属性,就可以将该空的容器和基本的组件组成一个整体的窗口
AWT提供了两种主要的容器类型:
Window:可独立存在的顶级窗口
Panel:可作为容器容纳其他组件,但不能独立存在,必须被添加到其它的容器中


布局管理器
Java提供了布局管理器来组件在容器中的布局,而不是直接设置组件位置和大小
常见的有:
FlowLayout:组件向某个方向排列,遇到边界就折回,从头开始排列
BroderLayout:将容器分为东,西,南,北,中五个区域普通组件被放置在这五个区域的任意一个中
GirdLayout:将容器分割成纵横线分隔的网格,每个网格所占的区域大小相同

AWT常用组件
Button
Frame
Panel
TextField


事件处理
Frame和组件本身没有事件处理的能力,必须由特定对象(事件监听器)来处理
实现事件处理机制的步骤:
1.实现事件监听类,必须实现XxxListener接口
2.创建普通组件(事件源),创建事件监听对象
3.调用addXxxListener()方法,将事件监听器注册给普通组件,当事件源上发生指定的事件时,AWT会触发事件监听器,由事件监听器调用相应的方法(事件处理器)来处理事件,事件源上发生的事件会作为参数传入事件处理器

编码实战
创建window容器

/**     * window演示     */    

public static void window(){        //创建顶级窗口        

    Frame f = new Frame();        //设置窗口的位置,大小        

    f.setBounds(30,30,500,400);        //将窗口显示出来        

    f.setVisible(true);    

}

创建panel容器

/**         * panel演示         */    

public static void panel(){        

    Frame f = new Frame();        //创建一个Panel容器        

    Panel p = new Panel();        //向Panel容器中田间两个组件        

    p.add(new TextField(45));        

    p.add(new Button("button"));        //将panel容器添加到frame窗口中        

    f.add(p);        

    f.setBounds(30,30,500,400);        

    //将窗口显示出来        

    f.setVisible(true);    

}

使用 FlowLayout布局管理器

/**布局管理器     * layout演示,flow     */    

public static void flowLayout(){        

    Frame f = new Frame("test");        //设置Frame容器使用FlowLayout布局管理器        

    f.setLayout(new FlowLayout(FlowLayout.LEFT,20,5));        //向窗口中添加10个按钮        

    for (int i = 0; i < 50; i++) {            

        f.add(new Button("button" + i));        

    }        

    //设置窗口最佳大小       

    f.pack();                

    //将窗口显示出来        

    f.setVisible(true);    

}

使用 BorderLayout布局管理器

/**布局管理器     * layout演示,border     */    

public static void borderlayout(){        

    Frame f = new Frame("test");        //设置使用BorderLayout布局管理器        

    f.setLayout(new BorderLayout());        

    f.add(new Button("SOUTH"),BorderLayout.SOUTH);        

    f.add(new Button("NORTH"),BorderLayout.NORTH);        

    f.add(new Button("EAST"),BorderLayout.EAST);        

    f.add(new Button("WEST"),BorderLayout.WEST);        

    //默认添加到中间区域        

    f.add(new Button("CENTER"));        

    //设置窗口最佳大小        

    f.pack();                

    //将窗口显示出来         

    f.setVisible(true);    

}

使用GridLayout布局管理器

/**     * GridLayout布局管理器     */    

public static void gridLayout(){        

    Frame f = new Frame("计算器");        

    Panel p1 = new Panel();        

    p1.add(new TextField(50));        

    f.add(p1,BorderLayout.NORTH);        

    Panel p2 = new Panel();        

    //设置Panel使用GridLayout布局管理器        

    p2.setLayout(new GridLayout(3,5,4,4));        

    String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};        

    for (int i = 0; i < name.length; i++) {            

        p2.add(new Button(name[i]));        

    }        

    //默认将Panel对象添加到Frame窗口的中间        

    f.add(p2);        

    //设置窗口最佳大小//        

    f.pack();        

    //将窗口显示出来        

    f.setVisible(true);    

}

事件处理

public static void main(String[] args) {        

    new Do().init();            

}    

private Frame f = new Frame("测试事件");  

private Button ok = new Button("OK");    

private TextField tf = new TextField(30);    

public void init(){        

//注册事件监听器        

ok.addActionListener(new OkListener());        

f.add(tf);        

f.add(ok,BorderLayout.SOUTH);      

f.pack();      

f.setBounds(30,30,500,400);        

f.setVisible(true);    }    

//定义事件监听器类    

class OkListener implements ActionListener{        

    //定义事件处理器,用于响应特定事件        

    public void actionPerformed(ActionEvent e){            

    System.out.println("单击了OK按钮");            

    tf.setText("Hello World");        

}    

}


明天的计划

写后台的用户管理部分,处理微信图片上传和账号绑定的bug,


遇到的问题

微信图片转存到OSS失败


收获

Java  AWT编程





返回列表 返回列表
评论

    分享到