java(6)--GUI学习

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的继承体系
java(6)--GUI学习_第1张图片
我们可以通过add方法将控件(window、frame、dialog和panel增加进去)

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

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

BorderLayout(边界布局管理器)

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

GridLayout(网格布局管理器)

  • 规则的矩阵

CardLayout(卡片布局管理器)

  • 选项卡

GridBagLayout(网格包布局管理器)

  • 非规则的矩阵

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

java(6)--GUI学习_第2张图片

除了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);

你可能感兴趣的:(GUI)