黑马程序员--------------java基础----------------- 图形化界面



------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

第一讲  Gui概述

1、图形用户界面,用于计算机与用户交互的一种方式。
      用图形的界面显示计算机操作的界面,这样更为方便,更为直观。
      相反dos命令行,需要记忆些常用的命令,操作不直观

2、java为Gui提供的对象都在java.awt和java.Swing两个包中
      java.awt需要调用本地系统方法实现功能,属于重量级控件
      java.Swing在Awt上,建立一套图形用户界面系统,提供更多的组件,而且完全有java实现,属于轻量级控件

3、container是一个容器,是一个特殊的组件,该组件可以通过add方法添加其他组件进来。
Container常用子类:Window   Panel(面板,不能单独存在。)

Window常用子类:Frame  Dialog

4、常见布局管理器
 4.1 FlowLayout 流式布局管理器
     从左到右的顺序排列,panel默认的管理器
 4.2、borderLayout 边界布局管理器
      东南西北中排列。是Frame默认的管理器
 4.3 、GridLayout 网络布局管理器
     规则的矩阵
 4.4、CardLayout:卡片式布局管理器,即选项卡
  4. 5、GridBayLayout:网格包布局管理器,非规则矩阵
思考:如果存在多种布局方式,如何创建窗体界面呢?
先将窗体Frame进行大区域的划分,设置其布局管理器,加入面板Panel, 将组件加入Panel,设置面板的布局管理器。


5、创建图形化界面
 5.1、创建frame窗体
 5.2、对窗体进行基本设置
     比如大小、位置、布局
 5.3、定义组件
 5.4、将组件通过add方法添加到窗体
 5.5、让窗体显示,通过setVisible(true)

import java.awt.*;
import java.awt.event.*;
import java.io.*;


//传建一个窗体,并进行基本设置


/*
class GuiTest
{
 public static void main(String[] args)
 {
  Frame  f=new Frame("我的窗体");//创建窗体
  f.setBounds(200,300,400,300);//设置大小
  Button b=new Button("按钮");
  f.add(b);//将按钮添加到窗体上
  f.setLayout(new FlowLayout());//设置窗体为流式布局
  f.setVisible(true);//将窗体设置为可见

 }
}


第二讲  事件监听机制

1、事件源
 就是awt或者swing包中的组件
2、事件
 每一个事件源都有自己特有的对应的事件和共性事件
3、监听器
 将可以触发某一个事件的动作都封装到监听器中。
 以上三者在java中已经定义好了,我们只要对产生的动作处理就行了
3.1、确定事件源(容器或组件)。通过事件源对象的addXXXListener()方法将监听器注册到该事件源上。该方法中接收XXXListener的子类对象,
或者XXXListener的子类XXXAdapter的子类对象。

3.2、一般用匿名内部类来表示。在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。


4、窗体的监听事件
 要继承windowAdapter并复写windowclosing方法,对应的事件是windowEvent
5、按钮的监听事件
 没有对应的adapter,要覆盖的方法时actionPerformed,对应的事件是actionEvent
6、对话框Dialog
7、菜单栏的制作
8、常用的组件
 文本框、文本区、菜单栏、子菜单
 8.1、Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem

   8.2、MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。

       8.3、MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。

       8.4、菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。

     8.5、通过setMenuBar()方法,将菜单添加到Frame中。

------------------------------------------------------------
*/

import java.awt.*;
import java.awt.event.*;
import java.io.*;

//创建一个窗体,并对窗体事件,按钮事件,鼠标事件和键盘事件进行练习


/*

class GuiTest
{
 public static void main(String[] args)
 {
  Frame  f=new Frame("我的窗体");//创建窗体
  f.setBounds(200,300,400,300);//设置大小
  Button b=new Button("关闭按钮");
  f.add(b);//将按钮添加到窗体上
  f.setLayout(new FlowLayout());//设置窗体为流式布局
  f.setVisible(true);//将窗体设置为可见
  
  f.addWindowListener(new WindowAdapter() //以匿名内部类的形式传入
  {
  
   public void windowClosing(WindowEvent e)//复写方法
   {
   
    System.exit(0);
   }
  
  });


  b.addActionListener(new ActionListener()//以匿名内部类的形式传入
  {
   public void actionPerformed(ActionEvent e)//复写方法
   {
   
    System.exit(0);
   }
  
  });

  b.addMouseListener(new MouseAdapter()
  {
  
   public void mouseClicked(MouseEvent e)//复写方法
   {
    //System.out.println("点击事件");
    //if(e.getClickCount==2)
     //System.out.println("双击事件");//栓剂事件
   
   }
  
  });

  b.addKeyListener(new KeyListener()//以匿名内部类的形式传入
  {
   public void keyPressed(KeyEvent e)//复写方法
   {
   
    if(e.getKeyCode()=KeyEvent.VK_ENTER)
      System.exit(0);

   }
  
  });
  


 }
}
------------------------------------------------------
*/


//需求:在窗体上添加一个文本框和文本区域,在文本框中输入本地盘符。就将该盘下的目录添加到文本区域
//输入的不是本地磁盘,就弹出对话框提示


/*

class GuiTest
{
 public static void main(String[] args)
 {
  Frame  f=new Frame("我的窗体");//创建窗体
  f.setBounds(200,300,400,300);//设置大小
  Button b=new Button("转到");
  TextField  tf=new TextField(30);//创建文本框
  TextArea  ta=new TextArea(40,50);//创建文本区域
  
  Dialog d=new Dialog(f,"提示信息",true);//创建对话框
  d.setBounds(100,100,300,200);
  
  Label lab=new Label();
  d.add(lab);
  f.add(tf);//添加文本区域
  f.add(ta);
  f.add(b);//将按钮添加到窗体上
  f.setLayout(new FlowLayout());//设置窗体为流式布局
  f.setVisible(true);//将窗体设置为可见
  
  

  d.addWindowListener(new WindowAdapter() //以匿名内部类的形式传入
  {
  
   public void windowClosing(WindowEvent e)//复写方法
   {
   
   d.setVisible(false);
   }
  
  });

  
  b.addActionListener(new ActionListener()//以匿名内部类的形式传入
  {
   public void actionPerformed(ActionEvent e)//复写方法
   {
   
    ta.setText("");//每次添加时,都把文本区域清空
    String str=tf.getText();
    File file=new File(str);
    if(file.exists() && file.isDirectory())//判断输入的是否为目录
    {
     String []files=file.list();//列出所有目录
     for (String s:files)
     {
      ta.append(s+"\r\n");//添加到文本区域
     }
    
    }
    else
    {
     d.setVisible(true);
     String ss="路径不存在";
     lab.setText(ss);

     
    }
     
    
    
   }
  
  });


 }
}
---------------------------------------------------------------
*/

//在窗体上添加菜单栏,菜单项,子菜单,菜单下面有保存、退出、打开菜单。
//当点击打开时,弹出保存的对话框,保存时也会弹出对话框


class GuiTest
{
 public static void main(String[] args)
 {
  new Gui();

 }
}

class Gui
{
 //将数据私有
 private Frame f;
 private MenuBar mb;
 private Menu m;
 private MenuItem mt,open,close,save;
 private FileDialog openDialog;
 private FileDialog saveDialog;
 private TextArea  ta;
 private File file;
 //构造函数
 Gui()
 {
  init();
 }
 public void init()
 {
  f=new Frame("我的窗体");//创建窗体
  mb=new MenuBar();
  m=new Menu("文件");
  //创建按钮
  open=new MenuItem("打开");
  close=new MenuItem("关闭");
  save=new MenuItem("保存");
  ta=new TextArea();

  openDialog=new FileDialog(f,"打开窗口",FileDialog.LOAD);//创建打开窗口
  saveDialog=new FileDialog(f,"保存",FileDialog.SAVE);//创建保存窗口
  f.setBounds(200,300,400,300);//设置大小
  
  f.setMenuBar(mb);//窗体上添加菜单栏
  mb.add(m);
  m.add(open);
  m.add(close);
  m.add(save);
  f.add(ta);
  f.setVisible(true);//将窗体设置为可见
  
  event();//调用方法

 }
 public void event()
 {
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);//关闭窗口
   }
  });
  close.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });

  save.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    if(file==null)//文件不存在才打开窗口
    {
     saveDialog.setVisible(true);
     String dir=saveDialog.getDirectory();//获取目录
     String name=saveDialog.getFile();//获取名字
     if(dir==null || name==null)
      return ;//不存在时返回空
    
     file=new File(dir,name);
     }

     BufferedWriter buw=null;
     try
     {
      buw=new BufferedWriter (new FileWriter(file));//关联文件
      
      String str=ta.getText();
      buw.write(str);
      buw.flush();
      buw.newLine();

     }
     catch (IOException ex)//不能跑出异常,只能处理
     {
      throw new RuntimeException("写入失败");
     }
    finally
    {
     try
     {
      if(buw!=null)
       buw.close();//关闭资源
     }
     catch (IOException ex)
     {
      throw new RuntimeException("关闭失败");
     }
    }

   }
  });
  
  
  open.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    openDialog.setVisible(true);
    String dir=openDialog.getDirectory();//获取目录
    String name=openDialog.getFile();//获取名字
    if(dir==null || name==null)
     return ;//不存在时返回空
     file=new File(dir,name);
    BufferedReader bur=null;
    try
    {
     bur=new BufferedReader (new FileReader(file));//关联文件
     String line=null;
     while ((line=bur.readLine())!=null)
     {
      ta.append(line+"\r\n");
     }
    }
    catch (IOException ex)//不能跑出异常,只能处理
    {
     throw new RuntimeException("读取失败");
    }
    finally
    {
     try
     {
      if(bur!=null)
       bur.close();//关闭资源
     }
     catch (IOException ex)
     {
      throw new RuntimeException("关闭失败");
     }
    
    }

   }
  });


 }
}

        ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值