黑马程序员-------图形化用户交互---GUI

原创 2015年07月09日 21:12:01

                                   黑马程序员-------图形化用户交互---GUI         

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

                               

两种用于用户操作的界面:
    图形化界面  GUI: 
    命令行   CLI:


 GUI:
 Graphical User Interface (图形用户接口)
 用图形方式,来显示计算机操作界面,这样更方便直观,
 CLI:
 Command line User Interface(命令行用户接口)
 就是常见的Dos命令操作,
 需要记忆一些常用的命令,操作不直观.
举例:
 比如:创建文件夹,或者删除文件夹等
java为GUI提供对象在Java.Awt和javax.Swing两个包中


Awt与Swing
 java.Awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属重量级控件.
 javaxSwing:在AWT的基础上,建立的一套图新界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植
 属轻量级控件

Awt组件:

                                         Component

                                        /              |----Button  按钮

                          容器 Container      |---lanle   标签

                            |                 |        |----checkBoz  复选框

           窗口Window     panel 面板   |-----TextComponent  文本组件 

                     |                  |                        /                 \

         框架Frame   Dialog对话框  TextArea文本区域    TextField 文本框

                                        |

                              FileDialog文本对话框








特殊组件 : Container 作为一个组件里面可以添加组件


布局管理器
 容器中的组件的排放方式,也就是布局
 常见的布局管理器;
   FlowLayout(流式布局管理器)
     从左到右的顺序排列
Panel默认的布局管理器
   BorderLayout(边界布局管理器)
     东南西北中
Frame默认布局管理器
   GridLayout(网格布局管理器)
     规则的矩阵
   CardLayout(卡片布局管理器)
     选项卡
   GridBagLayout(网格包布局管理器)
     非规则的矩阵  
                  

创建交互界面思路:
1.创建一个frame窗体
2.对窗体进行基本设置
   比如大小,位置,布局.
3.定义组件
4.将组件通过窗体的add方法添加到窗体中.
5.让窗体显示,通过setVisible(true)

import java.awt.*;
class  AwtDemo 
{
	public static void main(String[] args) 
	{
		Frame f = new Frame("my awt");
         f.setSize(500,400);//设置初始化大小500是横坐标(款),100是纵坐标(长)
		 f.setLocation(400,400);  //初始化设置默认显示位置(横坐标,纵坐标)
		 f.setVisible(true); //设置显示隐藏
		
		//添加按钮
		Button b = new Button("点击添加");
		f.add(b);

	    f.setLayout(new FlowLayout());//设置布局管理格式
		
		//System.out.println("Hello Word");
	}
}

事件监听机制组成
  事件源(组件)
  事件(Event)
  监听器(Listener)
  事件处理(引发事件后处理方式)


 事件监听机制个点:
  
  事件源:Awt包或者Swing包中的那些图形界面组件:


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


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


  以上三者,在java中定义好了,
  直接获取对象来用就可以了.


  我们要做的事情就是,对产生动作进行处理.


添加监听器:
 void  addWindowListener(WindowListener l );
          添加窗体监听器,以从此窗口接受窗口事件


       窗口监听实例---关闭窗口:

             

import java.awt.*;
import java.awt.event.*;
class  AwtDemo1
{
	public static void main(String[] args) 
	{
		Frame f = new Frame("Awt Demo");
		f.setSize(500,400);     //设置窗口大小
		f.setLocation(500,600);  //设置窗口出现位置
		f.setLayout(new FlowLayout());  //设置组件布局

		Button b = new Button("点击激活"); //创建组件
		f.add(b);                //添加组件
  
        f. addWindowListener(new WindowAdapter()
		{ 
			public void windowClosing(WindowEvent e)
			{
			   System.out.println("窗口已关闭");
			   System.exit(0);
			}
			
		
		});//添加监听器
 




		f.setVisible(true);    //显示组件
	}
}
/*
class MyWin implements WindowListener
{
   //覆盖7个方法.可是只需要使用到关闭动作方法
   //其他动作都没用到,可是却必须复写
}
*/

//因为WindowListener的子类WindowAdapter已经时间了WindowListener接口
//并覆盖了其中的所有方法,那么我们只需要继承自windowAdapter覆盖需要的方法即可
class MyWin extends WindowAdapter
{
  public void windowClosing(WindowEvent e)
  {
    // System.out.println("关闭窗口---"+e);
	System.exit(0);
  }


}


 void addKeyListener(KeyListener l);

         添加键盘监听器,从此键盘接受键盘事件

 void addMouseListener(MouseListener l);

         添加鼠标监听器,以从此鼠标接受鼠标事件

 void addActionListener(ActionListener l);

         添加活动监听器,以从此活动来接受活动事件
        

   键盘监听事件实例:

               

import java.awt.*;
import java.awt.event.*;
class  MouseAndKeyEvent
{ 
  MouseAndKeyEvent()
  {
    init();
  }
   private Frame f;
   private Button but;
   private TextField tf;
   public void init()
   {
     f=new Frame("Mouse");
	 //初始化窗口大小,出现位置
	 f.setBounds(400,500,600,500);
	 f.setLayout(new FlowLayout());//设置布局管理方式
      
	   
	 tf = new TextField(20);
	 f.add(tf);

	 but = new Button("点击激活");
	 f.add(but);
     
   

	 myAction();

      f.setVisible(true);
   }
    
    private void myAction()
	{   //窗口监听器  监听器:Listenrt
		//顺序: 添加适配器-->多个方法是用适配器,一个方法是用监听器-->覆盖方法-->添加事件 
	   f.addWindowListener(new WindowAdapter()//(方法太多使用适配器)
	   {
		                          //even 事件
	     public void windowClosing(WindowEvent e) 
		 {
		    System.exit(0);
		
		 }
	   
	   });
	       //鼠标监听器 
	   but.addMouseListener(new MouseAdapter()//(鼠标适配器)
	   { 
		 private int count=0;
	     public void mouseEntered(MouseEvent e)//event 事件
		 {
		   System.out.println("鼠标事件"+count++);
		   
		 }
	   
	       //鼠标点击事件
		  private int ClickedCount = 0;
		  public void mouseClicked(MouseEvent e)//鼠标事件
		  { 
               if(e.getClickCount()==2)
			    System.out.println("鼠标点击事件"+ClickedCount++);
			   

		  }
		  });
		  //给键盘添加监听器
		  but.addKeyListener(new KeyAdapter()
		  {
		    public void keyPressed(KeyEvent e)
			{
				if(e.isControlDown()&&e.getKeyCode()==e.VK_S)//isContorlDown()//是否按下Control
			  //System.out.println("Control + s");
				System.exit(0);
				
				
			  // System.out.println(Event.getKeyText(e.getKeyCode())+":::"+e.getKeyCode());
			    
			}
		  });
			 //监听键盘
          tf.addKeyListener(new KeyAdapter()
		  {
		       public void keyPressed(KeyEvent e)
			   {
				   int code=e.getKeyCode();
                    //定义限制文本框输入的字符
			     if (!(code>=e.VK_0 && code<=e.VK_9 || code==e.VK_BACK_SPACE))
				 {
			        System.out.println(code+"非法的");
                      e.consume();//屏蔽键
				  }	 
			     
			   
			   }
		  
		  
		  });
			  
		 
	}

	public static void main(String[] args) 
	{
		new MouseAndKeyEvent();
	}
}

   练习 :

   在文本框中输入目录,点击"转到"按钮,.将该目录的文件以及文件名称列在下面的文本区域中

    思路:
1.制作图形化界面
  需要用到:
       按钮: Button
  窗口: Frame
  文本框: TextField
  文本区域: TextArea
 2.点击转到: 需要进行按钮组件活动监听
 3.监听到之后需要返回文本框TextField中输入的目录字符
                    使用到组件中的getText()方法
 4.将获取到的目录名添加到File 对象中,
     转换成字符串数组进行遍历

            

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class TextDemo1
{  //所以要的组件
	private Frame  f;
	private Button but;
	private TextField tf;
	private TextArea ta;
	//构造函数
	TextDemo1()
	{
	   init();
	}
	//制作图形化界面
    public void init()
	{
	  //创建新的窗口对象
	  f = new Frame("File");
	  //初始化界面
	  f.setBounds(500,500,600,500);
	  //添加布局管理
	  f.setLayout(new FlowLayout());
	  //创建组件对象并添加组件
	   tf = new TextField(70);
	   but =new Button("转到");
	   ta = new TextArea(25,80);
	   f.add(tf);
	   f.add(but);
	   f.add(ta);
		
		myEvent();
	  //显示窗口
	  f.setVisible(true);
	}
    private void myEvent()
	{    //添加活动监听器
	   but.addActionListener(new ActionListener()
	   {  
	     public void actionPerformed(ActionEvent e)
		 {
			   //返回tf的字符串
		    String dirPath= tf.getText(); 

           //创建File对象 指定定构造其中的文件
		  File dir = new File(dirPath);

             //判断dir制定文件是不是存在&&是否是一个目录
		  if(dir.exists() && dir.isDirectory())
          {     ta.setText("");
		      String[] names = dir.list();
			  for(String name : names)
			  {
			     ta.append(name+"\r\n");
			  }
		  }   

          /*      //给ta设置显示字符串
                ta.setText(text);
                //清空tf*/




				//tf.setText("");

		//	System.out.println(text);
		 }
	   
	   });

           //添加窗口监听器
	   f.addWindowListener(new WindowAdapter()
	   {           //关闭创窗口事件
	      public void windowClosing(WindowEvent e)
		  {
		      System.exit(0);
		  }
	   });
        //添加键盘监听器
	   tf.addKeyListener(new KeyAdapter()
	   {
	     public void keyPressed(KeyEvent e)
		 {    //当在tf中按下enter时运行方法
			  int code = e.getKeyCode();
		    if (code==e.VK_ENTER)
		    {
				String dirPath1 = tf.getText();
				
				File dir1 = new File(dirPath1);

				if(dir1.exists() && dir1.isDirectory())
                {      ta.setText("");
				    String[] fl =  dir1.list();
					
					for (String name1 :fl )
					{
						ta.append(name1+"\r\n");

					}
                }
		    }
		 }
	   
	   });
	}
	public static void main(String[] args) 
	{
		new TextDemo1();
	}
}
               ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

          

相关文章推荐

黑马程序员——java高新技术——GUI图形化用户界面

点击打开链接 点击打开链接 点击打开链接 android培训、点击打开链接 点击打开链接 java培训、期待与您交流!">点击打开链接 点击打开链接  //菜单栏、菜单的练习 ackage myme...

黑马程序员--Java学习日记之GUI(图形化用户界面编程)

                                                                                     ------...
  • Memor_
  • Memor_
  • 2015年06月27日 12:11
  • 553

黑马程序员:Java基础总结----GUI图形化界面

黑马程序员:Java基础总结 GUI&网络&IO综合开发  ASP.Net+Android+IO开发、.Net培训、期待与您交流! 网络架构 C/S...

Java图形化界面GUI-01-----黑马程序员

ASP.Net+Android+IOS开发------期待与您交流     1. 容器   * 窗口,面板,选项卡,可以存放其他容器或者组件     * Frame窗口     * Dialog ...

黑马程序员——Java基础--GUI图形化界面

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- GUI图像化界面 一、概述   GUI Graphical User Interfac...

黑马程序员---图形化界面(GUI)

图形化界面(GUI) 概述 用户与计算机进行交换的方式有两种: GLI:Command lin User Interface(命令行用户接口),也就是常见的dos窗口,它需要记住一些常用的命令,操...

黑马程序员java学习笔记——GUI图形化界面

GUI图形用户界面     GUI概述     计算机有两种方式可以和用户进行交互,第一种是命令行方式,但是命令行方式使用起来比较麻烦,需要记录住很多命令,不方便操作,所以后来出现了另一种交互方式,...

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

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

黑马程序员--线程之间的通信,等待与唤醒机制,线程的终止方式,线程中的其他方法,优先级,toString() 守护线程,GUI图形化界面

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------ 1.      多线程,状态图(6个状态),创建方式,继承方式,实现接口方式。Threa...

【黑马程序员】图形化界面GUI知识总结

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! -------------------- 黑马程序员_07Java图形化界...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员-------图形化用户交互---GUI
举报原因:
原因补充:

(最多只允许输入30个字)