GUI

一. 概述:     GUI图形用户界面

GLI命令行

 

二. 

       java.Awt:抽象窗口工具包,需要调用本地系统方法实现功能。属重量级控件。

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

 

三. 继承关系

       Component

              Button

              Label

              Checkbox

              TextComponentTextAreaTextField

              Container    Window

                                          Frame

                                          DialogFileDialog

                                   Panel

 

四. 布局管理器

       容器中的组件的排放方式,称为布局

       流式布局:FlowLayout

       边界布局:BorderLayout

       网格布局:GridLayout

       卡片布局:CardLayout

       网格包布局:GridBagLayout

       坐标式布局

 

五. 实例

       创建图形化界面:

1.    创建frame窗体

2.    对窗体进行基本设备,比如大小,位置,布局

3.    定义组件

4.    将组件通过窗体的add方法添加到窗体中。

5.    让窗体显示,通过setVisible(true)

       Frame f = new Frame(“wode frame”);

       f.setSize(500,200);//x,y 设置窗体大小

       f.setLocation(300,200);//设备窗体显示的位置

       f.setLayout(newFlowLayout());

       Botton b = newButton(“按钮”);      

       f.add(b);

       f.setVisible(true);

六. 事件监听机制

       1.     将监听器注册到事件源

       2  有监听器所监听的动作作于事件源上

       3.     产生事件对象

       4.     将事件对象传给事件处理方式

      

       事件监听机制的特点:

1.    事件源:就是awt包或者swing包中的那些图形界面组件

2.    事件:每一个事件源都有自己特有的对应事件和共性事件

3.    监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中

以上三者,在JAVA中都已经定义好了,直接获取其对象来用就可以了。我们要做的事情是,就是对产生的动作进行处理。

4.    事件处理:

//因为WindowListener的子类WindowAdapter已经实现了WindowListener的方法。所以只需要继承WindowAdapter类,复写所需要的方法即可。

 

f.addWindowListener(new WindowAdapter(){

        public voidwindowClosing(WindowEvent e){

               System.out.println(“close”);

               System.exit(0);

}

});

 

七. Action事件

//让按钮具备退出程序的功能,按钮就是事件源。通过查阅button的描述,发现按钮支持一个特有监听:addActionListener

but.addActionListener(new ActionListener(){

        public voidactionPerformed(ActionEvent e){

               System.exit(0);

}

});

 

八. 鼠标、键盘事件

       but.addMouseListener(newMouseAdapter(){

              public voidmouseEntered(MouseEvent e){

                     System.out.println();

}

publicvoid mouseClicked(MouseEvent e){

       if(e.getClickCount()==2){

              System.out.println(“双击动作”);

}

}

});

      

       -------键盘

       but.addKeyListener(newKeyAdapter(){

              public voidkeyPressed(KeyEvent e){

                     //组合键,按下ctrl+enter键执行

                     if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){

                            System.exit(0);

}

}

});

 

-------文本框:只允许填写数字

 

tf.addKeyListener(newKeyAdapter(){

       public void keyPressed(KeyEvent e){

              int code= e.getKeyCode();

              if(code>=KeyEvent.VK_0&& code<=KeyEvent.VK_9){

                     System.out.println(“非法输入”);

                     e.consume();

              }

}

});

 

.   练习

       资源管理器

       地址栏、转到按钮、文本域

      

       Dialog:提示框

      

 

 

       菜单:MenuBar

importjava.awt.*;

importjava.awt.event.*;

 

class MyMenuDemo{

       private Frame f;

       private MenuBar mb;

       private Menu m,submenu;

       private MenuItem closeItem,subItem;

 

       MyMenuDemo(){

              init();

}

}

publicvoid init(){

       f = new Frame(“my window”);

       f.setBounds(300,100,500,600);

       f.setLayout(new FlowLayout());

      

       mb = new MenuBar();

       m = new Menu(“文件”);

       subMenu = new Menu(“子菜单”)

subItem= new MenuItem(“子条目”);

       closeItem = new MenuItem(“退出”);

      

       subMenu.add(subItem);

       m.add(subMenu);

       m.add(closeItem);

       mb.add(m);

      

       f.setMenuBar(mb);

 

       myEvent();

       f.setVisible(true);

}

privatevoid myEvent(){

       f.addWindowClosing(WindowEvent e){

              System.exit(0);

}

};

 

publicstatic void main(String[] args){

       new MyMenuDemo();

}

 

 

FileDialog:选取对话框

newFileDialog(f , “打开fileDialog.LOAD);

newFileDialog(f , “保存fileDialog. SAVE);

 

 

十. JAR

       javac  –d c:\myclass  MyMenuTest.java

       新建一个文件:1.txt

       内容:Mian-Class:空格mymenu.myMenuTest回车

       jar  -cvfm my.jar  1.txt  mymenu

      

       MANIFEST.MF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值