JAVASE学习笔记第22天

GUI(概述)

1、GUI(图形用户界面)

l  Graphical User Interface (图形用户接口)

l  用图形的方式来显示计算机操作界面,更方便于操作

 

2、CLI

l  Command Line User Interface(命令行用户接口)

l  需要记住常用的命令

 

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

4、现在做外观,有Awt、Swing、Swt

5、Awt和Swing的区别:

l  java.Awt: Abstract Window ToolKit (抽象窗口工具包),需要调用本地方法实现功能,是重量级的控件。(有点依赖于平台)

l  javax.Swing:提供了更多的组件,由java实现,增强了移植性,轻量级控件(和平台的关系不大)

 

6、继承关系图:

    Container 是一个特殊的组件,可以通过add方法添加其他的组件进来。

 

Component

Container

构件

容器

Window

panel

Fram

Dialog

FileDialog

Button

Label

Chexbox

TextComponent

TextArea

TextField

 

 

 

 

 

 

7、布局管理器:

l  容器中的组件的排放方式,就是布局

l  常见的布局管理器:

FlowLayout(流式布局管理器)

²  从左到右的顺序排列

²  Panel默认的布局管理器

 

l  BorderLayout(边界布局管理器)

²  东、南、西、北、中

²  Frame默认的布局管理器

 

l  GridLayout(网格布局管理器)

²  规则的矩阵

l  CardLayout(卡片布局管理器)

²  选项卡

l  GridBagLayout(网格包布局管理器)

²  非规则的矩阵

GUI(Frame)

1、创建一个简单的图形化界面的步骤:

²  创建一个Frame窗体

²  对窗体进行进本的设置,包括大小、位置、布局

²  定义组件

²  将组件添加到窗体中

²  显示窗体。

例子:

import java.awt.*;

 

class Demo1

{

       publicstatic void main(String[] args)

       {

              //创建一个Frame窗体

              Framef = new Frame("my frame");

              //设置窗体

              f.setSize(300,100);

              f.setLocation(300,100);

              f.setLayout(newFlowLayout());

 

              //创建组件

              Buttonb = new Button("我是按钮啊");

              //添加组件

              f.add(b);

 

              //显示

              f.setVisible(true);

       }

}

GUI(事件监听机制)

1、事件监听机制的流程图:

2,由监听器所监听的动作

作用在事件源上

事件源(组件)

外部动作

监听器

监听器引发

事件的动作

(事件处理方式)

1将事件监听器注册

到事件源

3产生事件对象

事件对象

4、将事件对象传递

给事件处理方式

 

2、事件监听的特点:

²  事件源

就是awt包或者swing包中的那些图形化界面的组件

 

²  事件监听器

将可以出发某一个事件的动作(不只是一个动作)都已经封装在了监听器中

 

²  事件

每一个事件源都有自己的特有的事件和共性的事件

 

²  事件处理方式

 

 

其实在java中事件源、事件监听器和事件都已经封装为对象。

我们要做的就是事件产生的动作进行处理。

 

 

GUI(窗体事件)

/**

窗体事件监听:

1,事件监听的导入包:importjava.awt.event.*;

2,WindowListener中的方法都是抽象的

3,WindowAdapter继承WindowListener接口并复写了里面所有

     的方法,但是是一个抽象的类,目的就是不让创建对象。

4,窗口事件常用的方法有打开,激活,关闭。

*/

import java.awt.*;

import java.awt.event.*;

 

class Demo2

{

       publicstatic void main(String[] args)

       {

              Framef = new Frame("窗体事件例子")      ;

 

              f.setSize(600,300);

              f.setLocation(100,300);

              f.setLayout(newFlowLayout());      

             

              Buttonb = new Button("我是按钮");   

 

              f.add(b);

 

              f.addWindowListener(newWindowAdapter()

              {

                     //关

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.out.println("我关");

                            System.exit(0);

                     }

 

                     //打开

                     publicvoid windowOpened(WindowEvent e)

                     {

                            System.out.println("打开");                         

                     }

 

                     //激活

                     publicvoid windowActivated(WindowEvent e)

                     {

                            System.out.println("激活");

                     }

              });

             

              f.setVisible(true);

       }

}

GUI(Action事件)

/**

流程:

1,定义基本的组件的引用

2,定义init方法,初始化基本的组件和基本的事件

3,构造函数,将init传进来

4,定义事件监听的函数

*/

 

import java.awt.*;

import java.awt.event.*;

 

class Demo3

{

       privateFrame frame=null;

       privateButton but = null;

 

       Demo3()

       {

              init();

       }

 

       //定义初始化的方法

       publicvoid init()

       {

              frame=new Frame("窗体的世界");

              //设置窗体的位置(前两个变量),大小

              frame.setBounds(300,100,400,500);

              frame.setLayout(newFlowLayout());

 

              but=newButton("退出");

              frame.add(but);

 

              //事件监听

              baseListener();

 

              frame.setVisible(true);

       }

 

       //定义基本的事件

       publicvoid baseListener()

       {

              frame.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.out.println("窗体退出");

                            System.exit(0);

                     }

              });

 

              but.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            System.out.println("按钮退出");

                            System.exit(0);

                     }            

              });

       }

      

       //调用

       publicstatic void main(String[] args)

       {

              newDemo3();    

       }

}

GUI(鼠标事件)

/**

1,共性的动作就是操作鼠标和键盘

 

2,鼠标点击动作和action动作的区别:

       1,鼠标点击比Action动作先执行

       2,action动作不用鼠标操作也能发生。

 

3,鼠标多击的要先看看event

*/

import java.awt.*;

import java.awt.event.*;

 

class Demo4

{

       privateFrame f = null;

       privateButton but = null;

 

       Demo4()

       {

              init();

       }

 

       publicvoid init()

       {

              f= new Frame("frame");

              f.setBounds(400,200,500,600);

              f.setLayout(newFlowLayout());

 

              but=newButton("我是按钮");

              f.add(but);

 

              myMouseListener();

 

              f.setVisible(true);

       }

 

       publicvoid myMouseListener()

       {

              //添加鼠标action事件

              but.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            System.out.println("acitonok");

                     }

              });   

 

              //添加鼠标点击事件

              but.addMouseListener(newMouseAdapter()

              {

                     publicvoid mouseEntered(MouseEvent e)

                     {

                            System.out.println("鼠标进入");          

                     }

                    

                     publicvoid mouseClicked(MouseEvent e)

                     {

                            if(e.getClickCount()==2)

                                   System.out.println("鼠标双击");

                     }

              });          

       }

 

       publicstatic void main(String[] args)

       {

              newDemo4();

       }

}

GUI(键盘事件)

import java.awt.*;

import java.awt.event.*;

 

class Demo5

{

       //定义引用

       privateFrame f =null;

       privateButton but=null;

       privateTextField tf=null;

 

       publicvoid init()

       {

              f=newFrame("鼠标事件");

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

              f.setLayout(newFlowLayout());

 

              but=newButton("我是按钮");

              f.add(but);

 

              tf=newTextField(20); //20是列数

              f.add(tf);

 

              myListener();

 

              f.setVisible(true);

       }

 

       Demo5()

       {

              init();

       }

      

       publicvoid myListener()

       {

              //System.out.println(but);

 

              but.addKeyListener(newKeyAdapter()

              {

                     publicvoid keyPressed(KeyEvent e)

                     {

                            if(e.getKeyCode()==KeyEvent.VK_ESCAPE)

                                   System.exit(0);                 

                           

                            //isControlDown是是否按下ctrl键

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

                            {

                                   System.out.println("hello");

                            }

                     }

              });

 

              //System.out.println(tf);          

 

              tf.addKeyListener(newKeyAdapter()

              {

 

                     publicvoid keyPressed(KeyEvent e)

                     {

                            intcode=e.getKeyCode();

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

                            {

                                   System.out.println("输入错误");

                                   e.consume();//有这个弄的结果就不会把不符合条件的 输入进来了。

                            }

                     }

              });   

       }

 

       publicstatic void main(String[] args)

       {

              newDemo5();

       }

}

GUI(练习)

 

 

/**

需求:做一个如图所示的界,在文本框中输入目录,

单击”转到“按钮,将该目录中的文件与文件夹名称列

在下面的文本区域中。

 

分析界面:

1,一个frame 、一个 TextField、一个Button、一个TextArea(文本区域)

2,在文本框中输入目录

3,按钮触发事件,遍历目录中的文件和文件夹,将其显示在文本区域中。

 

 

几个常用的方法:

1,关闭窗体

              f.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

 

2、鼠标事件

but.addActionListener(new ActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {}

              }

 

3、

TextField:

setText();

getText();

 

TextArea:

将给定文本追加到文本区的当前文本。

public void append(String str){}

 

*/

 

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

class Demo6

{

       //定义引用

       privateFrame f =null;

       privateTextField tf =null;

       privateButton but =null;

       privateTextArea ta =null;

 

       //初始化界面和基本的事件

       voidinit()

       {

              //创建对象

              f=newFrame("练习");

              tf=newTextField(50);//设置列数

              but=newButton("转到");

              ta=newTextArea(23,50);//设置行数和列数

 

              //设置界面

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

              f.setLayout(newFlowLayout());

                    

              f.add(tf);

              f.add(but);

              f.add(ta);

             

              //监听

              myEvent();

 

              f.setVisible(true);

       }

 

       voidmyEvent()

       {

              f.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

 

              but.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            //获取在文本框中输入的内容

                            StringdirName = tf.getText();

                            //将输入的目录名封装为对象

                            Filefile =new File(dirName);

 

                            //判断

                            if(file.exists()&& file.isDirectory())

                            {

                                   tf.setText("");//清空

 

                                   String[]names = file.list();

                                   for(Stringname : names)

                                   {

                                          ta.append(name+"\r\n"); 

                                   }

                            }                          

                     }

              });

       }

 

       Demo6()

       {

              init();

       }

 

       publicstatic void main(String[] args)

       {

              newDemo6();

       }

 

}

GUI(对话框Dialog)

 

/**

对话框的构造函数:

public Dialog(Frame f,String title,booleanmodal) 

//modal是模式,当为true的时候,只要不关闭这个对话框,就不能够操作其他的窗体。

 

*/

 

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

class Demo7

{

       //定义引用

       privateFrame f =null;

       privateTextField tf =null;

       privateButton but =null;

       privateTextArea ta =null;

   private Dialog d =null;

       privateLabel label = null;

       privateButton okbut = null;

                                  

       //初始化界面和基本的事件

       voidinit()

       {

              //创建对象

              f=newFrame("练习");

              tf=newTextField(50);//设置列数

              but=newButton("转到");

              ta=newTextArea(23,50);//设置行数和列数

             

      

              //设置界面

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

              f.setLayout(newFlowLayout());

                    

              f.add(tf);

              f.add(but);

              f.add(ta);

             

              //监听

              myEvent();

 

              f.setVisible(true);

       }

 

       voidmyEvent()

       {

              f.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

 

              but.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            //获取在文本框中输入的内容

                            StringdirName = tf.getText();

                            //将输入的目录名封装为对象

                            Filefile =new File(dirName);

 

                            //判断

                            if(file.exists()&& file.isDirectory())

                            {

                                   tf.setText("");//清空

 

                                   String[]names = file.list();

                                   for(Stringname : names)

                                   {

                                          ta.append(name+"\r\n"); 

                                   }

                            }     

                           

                            else

                            {

                                   d=new Dialog(f,"提示信息",true);

                                   label= new Label();

                                   okbut= new Button("确定");

 

                                   d.setBounds(300,400,300,240);

                                   d.setLayout(newFlowLayout());

                                  

                                   d.add(label);

                                   d.add(okbut);

 

                                   label.setText("您输入的信息有误,请重新输入");

                                  

                                   dialogEvent();

 

                                   d.setVisible(true);

                            }

                     }

              });

       }

 

       voiddialogEvent()

       {

              d.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)      

                     {

                            d.setVisible(false)      ;

                     }

              });

             

              okbut.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            d.setVisible(false)      ;

                     }

              });

             

       }

 

       Demo7()

       {

              init();

       }

 

       publicstatic void main(String[] args)

       {

              newDemo7();

       }

}

 

GUI(菜单)

/**

Menu extends MenuItem

Menu add(MenuItem)

Menu add(Menu)

*/

import java.awt.*;

import java.awt.event.*;

 

class Demo8

{

       privateFrame f;

       privateMenuBar mb;

       privateMenu m,subMenu;

       privateMenuItem closeItem,subItem;

 

       Demo8()

       {

              init();

       }

 

       voidinit()

       {

              f= new Frame("菜单练习");

              mb= new MenuBar();

              m=newMenu("文件");

              closeItem=newMenuItem("关闭");

              subMenu=newMenu("子菜单");

              subItem=newMenuItem("子条目");

 

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

              f.setLayout(newFlowLayout());

 

              f.setMenuBar(mb);  //在窗体中加入menubar的方法就是setMenuBar

              mb.add(m);

              m.add(closeItem);

              m.add(subMenu);

              subMenu.add(subItem);

             

              menuEvent();

 

              f.setVisible(true);

       }

 

       privatevoid menuEvent()

       {

              closeItem.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            System.exit(0);

                     }

              });

       }

 

       publicstatic void main(String[] args)

       {

              newDemo8();

       }

}

 

 

 

 

 

 

简单的记事本

/**

模拟记事本

*/

 

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

class Demo9

{

       //定义引用

       privateFrame f;

 

       privateMenuBar mbar;

       privateMenu fileMenu;

       privateMenuItem openItem,saveItem,exitItem;

 

       privateTextArea ta;

 

       privateFileDialog openDia,saveDia;

 

       privateFile file;

 

       //构造函数

       Demo9()

       {

              init();

       }

 

       privatevoid init()

       {

              f=newFrame("我的记事本");

              f.setBounds(100,200,550,600);

                    

              mbar=newMenuBar();

 

              fileMenu= new Menu("文件");

              openItem=newMenuItem("打开");

              saveItem=new MenuItem("保存");

              exitItem=newMenuItem("退出");

 

              ta=newTextArea();

 

              openDia=newFileDialog(f,"打开文件",FileDialog.LOAD);

              saveDia=newFileDialog(f,"保存文件",FileDialog.SAVE );

 

              f.setMenuBar(mbar);

              f.add(ta);

 

              mbar.add(fileMenu);

              fileMenu.add(openItem);

              fileMenu.add(saveItem);

              fileMenu.add(exitItem);

 

              myEvent();

 

              f.setVisible(true);             

       }

 

       privatevoid myEvent()

       {

              //窗体关闭

              f.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

 

              //退出

              exitItem.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            System.exit(0);

                     }

              });

 

              //打开

              openItem.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            openDia.setVisible(true);

                            StringdirPath=openDia.getDirectory();

                            StringfileName=openDia.getFile();

                            //System.out.println(dirPath+"...."+fileName);

                           

                            //按取消时候

                            if(dirPath==null|| fileName==null)

                                   return;

                    

                            ta.setText("");

                            file=newFile(dirPath,fileName);

                            try

                            {

                                   BufferedReaderbufr= new BufferedReader(new FileReader(file) );

 

                                   Stringline =null;

 

                                   while((line=bufr.readLine())!=null)

                                   {

                                          ta.append(line+"\r\n");

                                   }

                            }

                            catch(IOException ex)

                            {

                                   thrownew RuntimeException();

                            }

                           

                     }

              });

 

              //保存

              saveItem.addActionListener(newActionListener()

              {

                     publicvoid actionPerformed(ActionEvent e)

                     {

                            //如果文件不存在

                            if(file==null)

                            {

                                   saveDia.setVisible(true);

                                   StringdirPath=saveDia.getDirectory();

                                   StringfileName=saveDia.getFile();

 

                                   if(dirPath==null|| fileName==null)

                                          return;

 

                                   file=new File(dirPath,fileName);                              

                            }

 

                            try

                            {

                                   BufferedWriterbufw= new BufferedWriter(new FileWriter(file));

 

                                   Stringtext=ta.getText();

 

                                   bufw.write(text);

                                   bufw.close();

                            }

                            catch(IOException ex)

                            {

                                   thrownew RuntimeException("保存文件失败");

                            }

                           

                     }

              });

             

       }

 

       publicstatic void main(String[] args)

       {

              newDemo9();

       }

 

}

 

双击执行jar

1,文件夹类型中已经注册文件信息

2,多个类,定义包名

3,将源文件编译到指定的文件目录下

       例如:javac –d  F:\old 类名

4,将这个文件打成jar包

       例如:jar cvfF:\old my.jar(jar文件名) mymenu(包名)

5,自己定义一个配置清单文件

       例如:新建1.txt

       Main-Class:mymenu.Demo9  (:后必有空格,结尾处必有回车)

 

 

6,打成自定义配置文件的jar

jar –cvfm F:\old my.jar 1.txt mymenu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值