java(6)--GUI学习

来源:互联网 发布:windows phone论坛 编辑:程序博客网 时间:2024/06/05 20:18

GUI图形用户接口,相当于c#中的winform。以前一直用winform做,感觉特简单,控件拖进去,点点点就行了,写一些事件就能完成大多数事件。似乎学习c#都是从winform开始,感觉好简单的说,好了废话不多说。
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
先说一下Awt和Swing的区别:
Awt与 Swing
java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。(重量级控件就是和系统结合比较紧密的控件,受限于操作系统,不易于移植。)
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。(移植性很好)
接下来说说AWT的继承体系
体系图
我们可以通过add方法将控件(window、frame、dialog和panel增加进去)

记得第一次玩布局的时候是做Android的一个小应用,有一些布局是必须知道的,当时就是因为不懂布局,所以界面做的很差劲。常见的布局管理器:
FlowLayout(流式布局管理器)

  • 从左到右的顺序排列。
  • Panel默认的布局管理器。

BorderLayout(边界布局管理器)

  • 东,南,西,北,中
  • Frame默认的布局管理器。

GridLayout(网格布局管理器)

  • 规则的矩阵

CardLayout(卡片布局管理器)

  • 选项卡

GridBagLayout(网格包布局管理器)

  • 非规则的矩阵

有了控件就必须写方法,在控件上写入方法

事件监听机制

除了activeListener事件,其余事件都可以用WindowAdapter适配器来完成,省去了全部复写方法的麻烦。
例子:

Frame frame=new Frame("zgq");        //frame.setSize(500,400);        //frame.setLocation(300,200);        frame.setBounds(500, 400, 300, 200);        frame.setLayout(new FlowLayout());        Button but=new Button("button");        frame.add(but);        //为button写点击事件        but.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent arg0) {                // TODO 自动生成的方法存根                System.out.println("点击button");            }        });        //为frame写事件        frame.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent arg0){                System.exit(0);            }        });        //如果不用windowAdapter适配器,需要复写这么多事件  故使用适配器更为方便//      frame.addWindowListener(new WindowListener() {//          //          @Override//          public void windowOpened(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowIconified(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowDeiconified(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowDeactivated(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowClosing(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowClosed(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//          //          @Override//          public void windowActivated(WindowEvent arg0) {//              // TODO 自动生成的方法存根//              //          }//      });        frame.setVisible(true);
0 0
原创粉丝点击