现在的位置: 首页 > 综合 > 正文

(黑马程序员—日记5)GUI——渐渐的,我开始懂了

2013年08月09日 ⁄ 综合 ⁄ 共 2881字 ⁄ 字号 评论关闭

------- android培训java培训、期待与您交流! ----------

        窗外下着小雨,那棵石榴树上零零落落的挂了几只没人摘的石榴,此刻显得格外的寂寥。突然间思绪万千,胸中虽有千言,笔下难有一语,革命尚未成功,我还需加紧努力才是啊。学习不可懈怠,这几天去复习了图形用户界面,那些黑框框里的代码突然间也变的生动起来,似乎这会儿蹦出个界面,才觉得这段时间的学习有一点点小小的成果了。渐渐地,我开始懂了,那些年我们写过的代码,可以是这么让人沉醉。

 

     GUI和CLI

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

       CLI(命令行用户接口)
就是常见的DOS命令行操作,操作不直观

 

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

Swing是在AWT的基础上,建立的一套图形界面系统,提供了更多的组件,而且完全由java实现,增强了移植性,属于轻量级控件。

 

    GUI中的组件

      GUI中的组件之间的继承关系图如下:

 

 

        布局管理器
       容器中的组件的排放方式,就叫做布局
常见的布局管理器
DlowLayout(流式布局管理器)
BorderLayout(边界布局管理器)
GridLayout(网格布局管理器)
CardLayout(卡片布局管理器)
GridBagLayout(网格包布局管理器)

 

       创建图形化界面的基本步骤:
1、创建Frame窗体
2、对窗体进行基本设置。比如大小,位置,布局
3、定义组件
4、将组件通过窗体的add方法添加到窗体中
5、让窗体显示,通过setVisible(true)

 

     事件监听机制

       事件监听机制流程图

        组成元素
事件源(组件):
就是awt包或者swing包中的那些图形界面组件,(如何判断事件源是否为当前事件源,例如按钮,上面有一圈虚线就代表他是当前事件源)
事件(Event):每一个事件源都有自己特有的对应事件和共性事件
监听器(Listener):将可以触发某一个事件的动作(不止一个动作)否已经封装到了监听器中。

以上三者在java中都已经封装好了,我们只需要对产生的动作进行处理

     为窗体注册监听器

     Frame

示例代码:

f.addWindowListener(new WindowAdapter()//这里用到了匿名内部类,WindowAdapter是WindowListener接口的抽象子类,
  {
   public void windowClosing(WindowEvent e)//复写需要用到的方法
   {
    System.out.println("点叉叉,关闭");
    System.exit(0);
   }

 });

       WindowListener覆盖7个方法,我们只用到了关闭的动作,其他动作都没有用到,可是却必须复写。WindowListener的子类WindowAdapter已经实现了WindowListener接口,并覆盖了其中的所有方法。那么我只要继承自Windowadapter覆盖我需要的方法即可。
       WindowAdapter是抽象类,我们也可以通过匿名内部类的方法给窗体注册监听器

 

        Button

        给按钮添加监听器:addActionListener()方法

示例代码:

b.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)//复写接口中的actionPerformed方法
   {
    System.out.println("click on");
   }
  });

         ActionListener是少数没有适配器的监听器接口之一,因为该接口只有一个方法。
小知识点:只要抽象方法超过三个的都有适配器,适配器都是抽象类,只要继承了适配器,你需要那个方法就去覆盖那个方法,而不需要去实现每一个方法

 

     共性事件

        所有组件都具备,所以在Component里面,包括鼠标事件、键盘事件。

       鼠标事件

示例代码:

b.addMouseListener(new MouseAdapter()//鼠标监听器有适配器,选择我们需要的方法复写即可
  {
   public void mouseClicked(MouseEvent e)
   {
    if(e.getClickCount()==2)
     System.out.println("shuangji");
    System.out.println("i'm clicking");
   }
  });

 

注意:按钮上加事件最好是加ActionListener,因为这样鼠标跟键盘都可以执行这个按钮事件

 

       键盘事件

示例代码:

b.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    System.out.println(e.getKeyChar()+"````"+e.getKeyCode());
   }
  });

 

    菜单
       菜单图形化的关系图如下

 

 其中,Menu extends MenuItem,可调用Menu中的add方法为菜单项添加菜单条目。

       FileDialog

       创建文件对话框,通过构造方法FileDialog(Dialog parent, String title, int mode),类中有两个字段:FileDialog.LOAD、FileDialog.SAVE
 示例代码:
openDia = new FileDialog(f,"open",FileDialog.LOAD);
saveDia = new FileDialog(f,"save",FileDialog.SAVE);

 

       java包双击执行

       如何制作可以双击执行的jar包呢?
1,将多个类封装到了一个包(package)中。
2,定义一个jar包的配置信息。
 定义一个文件a.txt 。文件内容内容为:Main-Class:(空格)包名.类名(回车)
3,打jar包。jar -cvfm my.jar a.txt 包名
4,通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。

5,通过工具--文件夹选项--文件类型--jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序。 jdk\bin\javaw.exe -jar

 

    小总结:

      作为java中自己相对感兴趣的图形化界面,学起来还是挺好玩的。在创建窗体的时候,把一些引用都定义在类中,把注册监听器单独封装到一个方法里,还要记住,在添加组件的时候顺序不能乱。

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.