----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
GUI(图形用户界面)
(一)与用户交互的两种方式:
(1)GUI:Graphical User Interface(图形用户接口)。
含义:用图形的方式,来显示计算机操作的界面,这样更方便更直观。
友情提示:一般情况下,使用C++做图形化的界面会比较多一点,用Java的比较少,其原因是:(1)效率低。用Java编写出来的用户界面,你得使用JVM去解析Java程序。如果你用C++,那么直接双击就可以执行(windows是微软的,C++编程也是微软出的,那么自己的平台当然得支持利用自己的软件编写程序的执行)。
(2)CLI:Command line User Interface (命令行用户接口)
含义:就是常见的Dos命令行操作。
缺点:需要记忆一些常用的命令,操作不直观。
(3)Awt与 Swing(Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中)
(1)java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
(2)javax.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学习型技术博客、期待与您交流! ----------------------