黑马程序员--GUI

----------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

GUI(图形用户界面)

(一)与用户交互的两种方式:

1GUIGraphical User Interface(图形用户接口)

含义:用图形的方式,来显示计算机操作的界面,这样更方便更直观。

友情提示:一般情况下,使用C++做图形化的界面会比较多一点,用Java的比较少,其原因是:(1)效率低。用Java编写出来的用户界面,你得使用JVM去解析Java程序。如果你用C++,那么直接双击就可以执行(windows是微软的,C++编程也是微软出的,那么自己的平台当然得支持利用自己的软件编写程序的执行)。

2CLICommand line User Interface (命令行用户接口)

含义:就是常见的Dos命令行操作。

缺点:需要记忆一些常用的命令,操作不直观。

3Awt SwingJavaGUI提供的对象都存在java.Awtjavax.Swing两个包中)

1java.AwtAbstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。

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

(二)事件监听机制

1)组成部分:

1)  事件源(组件:如按钮、窗口等等)

2)  事件(Event

3)  监听器(Listener:监听引发事件的动作)

4)  事件处理(引发事件后处理方式)

2)鼠标事件

用于接收组件上感兴趣的鼠标事件(按下、释放、单击、进入或退出)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用MouseMotionListener。)旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅重写所需的方法)。然后使用组件的addMouseListener方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将MouseEvent传递给该方法。

友情提示:对于鼠标双击,我们使用e.getClickCount()==2前面使用if条件进行判断次数。

3)键盘事件

       用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。  

(三)Swing演示

       在画布中,添加一个按钮,这个时候需要注意的是:将按钮的属性Layout调成absolute,这个时候就可以随意的利用鼠标调节它的位置(注意当调节成flow时,此时,为固定的位置,不能改变的)。

(1)      练习:列出目录内容:

(2)      分析:我们需要在文本框中输入路径,然后,点击按钮就会转到相对应的位置,

在文本区域中显示该路径下相对应的内容

   步骤:1,选择Components组件,创建一个文本框和按钮

            2,选择文本区域,调节好他们之间的相互位置关系和大小(鼠标拖动即可)

3,中按钮(因为按钮是事件源),所以需要选中ActionListener,将actionPerformed的属性调节成handler method

4,创建快捷键enter键,该事件属于键盘键,所以,我们需要将KeyPressed相对应的属性调节成handler method

  private voidjButton1ActionPerformed(ActionEvent evt) {

     showDir();

    }

    public void showDir() {

     String dir_str = jTextField1.getText(); //获取文本框中的内容

     File dir = new File(dir_str);//目录并不一定是真实的,所以我们需要封装成对象,进行判断   

     if(dir.exists() &&dir.isDirectory()){//判断目录是否存在和是否有目录

            jTextArea1.setText("");//清空文本域中的内容

            String[] names = dir.list();//返回目录

           

            for(String  name : names){//遍历,取出name

                   jTextArea1.append(name+LINE_SEPARATOR);//显示内容并换行

            }

     }

    }

    private void jTextField1KeyPressed(KeyEventevt) {

     if(evt.getKeyCode()==KeyEvent.VK_ENTER)//判断该键是否是回车键

            showDir();

    }

(3)      显示菜单

分析:其实就是要求显示如:文件  编辑  查看  工具等等这样的效果就行

步骤:1,添加一个菜单条,新建一个菜单并将名称改为文件

    2,加一个菜单条目,命名为:打开,这个时候它就会自动将菜单添加完了

      也就是说,它在加入菜单条的时候,直接就是菜单了(如果你想要点击:打开的时候,有显示效果,那么你就可以对应文件的对话框就行了

         privatevoid jMenuItem1ActionPerformed(ActionEvent evt) throws IOException {

              dialog=new JDialog(this); //选择该对话框所对应的窗体

              dialog=setVisible(true);//显示出来

}

(4)      选取文件

    分析:1,两种情况:一种是选中文件,还有一种就是取消或者选择的文件不存在,那么这个时候,需要做的就是直接返回空值并提醒用户选择的文件不存在

          2,最好是采用高效的读取方式,进行

private voidjMenuItem1ActionPerformed(ActionEvent evt) throws IOException {

              chooser= new JFileChooser();//文件选取   

              intreturnVal = chooser.showOpenDialog(this);//显示对话框(需要选取的文件)

              if(returnVal== JFileChooser.CANCEL_OPTION){//判断选取的文件是否存在,不存在直接返回(当点击取消的时候,也是执行该操作的)

                     System.out.println("没有选取文件,取消了");

                     return;

              }

                 

              Filefile = chooser.getSelectedFile();//接收选取的文件

              BufferedReaderbufr = new BufferedReader(new FileReader(file));//高效读取文件并进行临时存储    

              Stringline = null;

              while((line=bufr.readLine())!=null){//只要里面的文件内容的行数一直存在,就一直读取文件

                     jTextArea1.append(line+LINE_SEPARATOR);//添加读取的内容到文本框中

              }

                    

              bufr.close();//关闭流操作

       }

 

 

----------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值