您的位置:首页 > 产品设计 > UI/UE

黑马程序员——Java基础知识之DUI(图形用户界面)

2015-05-16 10:39 330 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

(一)什么GUI?

1、图形用户界面,用于计算机与用户交互的一种方式,英文是GraphicalUser Interface

2、javaGUI:

java也将这种界面封装为对象,其中的对象都放在了两个包中:java.Awt包和javax.Swing包。

ava.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。

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

3、计算机的两种交互方式与用户:

GUI: Graphical User Interface,图形用户接口,用图形方式,来显示计算机操作界面,方便直观。

CLI: Command LineUser Interface,命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观。

(二)、Awt的体系图



注释:Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

(三)、布局管理器

就是容器中的组件排列方式

布局管理器的特点和分类:



(四)、窗体创建的步骤

①创建Frame窗体:

Frame f = new Frame(“my Frame”);//可设置标题,即窗体名字

②对窗体进行基本设置:如大小,位置,布局等:

f.setSize(int wight,int hight);//窗体大小设置

f.setLocation(int x,int y);//窗体显示位置设置,横纵坐标

f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置

f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout

③定义组件:

如Button b = new Button(“my Button”);//可设置组件的名称

④将组件通过窗体的add方法添加到窗体中:

f.add(b);//将按钮组件添加进窗体

⑤让窗体显示:

f.setVisible(boolean b);//通过设置参数是true还是false是否显示窗体

例子程序:

class AwtFirstDemo
{
public static void main(String[] args)
{
//创建Frame窗体:
Frame f = new Frame("my Frame");//可设置标题

//对窗体进行基本设置:如大小,位置,布局等:
f.setSize(500,100);//窗体大小设置
f.setLocation(300,150);//窗体显示位置设置,横纵坐标
//也可以直接用这个方法对大小和位置设置
// f.setBounds(int x,int y,int wight,int hight);
//参数为指定的布局管理器,如FlowLayout
f.setLayout(new FlowLayout());

//定义组件:
Button b = new Button("my Button");//可设置组件的名称

//将组件通过窗体的add方法添加到窗体中:
f.add(b);//将按钮组件添加进窗体

//让窗体显示://通过设置参数是true还是false是否显示窗体
f.setVisible(true);
}
}


(四)、事件监听机制

应用该机制的流程:

①事件源(组件):awt或swing包中的那些图形界面组件

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

③监听器(Listener):将可触发某一事件的动作(不只一个动作),都封装到侦听器中。

④事件处理:引发事件后的处理方式。



例子程序:

public static void main(String[] args)
{
Frame f = new Frame("my awt");
f.setSize(500,400);
f.setLocation(300,200);
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);
}
//监听并处理
public void windowActivated(WindowEvent e)
{
System.out.println("我活了。");

}
//监听打开动作,并处理
public void windowOpened(WindowEvent e)
{
System.out.println("我被打开了,hahahhahah");
}

});


例子程序:

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

class  FrameDemo
{

//定义该图形中所需的组件的引用。
private Frame f;
private Button but;

FrameDemo()
{
init();
}

public void init()
{
f = new Frame("my frame");

//对frame进行基本设置。
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());

but = new Button("my button");

//将组件添加到frame中
f.add(but);

//加载一下窗体上事件。
myEvent();

//显示窗体;
f.setVisible(true);

}
private void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

//让按钮具备退出程序的功能
/*
按钮就是事件源。
那么选择哪个监听器呢?
通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。
需要查看该组件对象的功能。
通过查阅button的描述。发现按钮支持一个特有监听addActionListener。

*/
but.addActionListener(new ActionListener()
{
private int count = 1;
public void actionPerformed(ActionEvent e)
{
//System.out.println("退出,按钮干的");
//System.exit(0);

//f.add(new Button("Button-"+(count++)));
//f.setVisible(true);
//f.validate();

//System.out.println(e.getSource());
Button b = (Button)e.getSource();

Frame f1 = (Frame)b.getParent();

f1.add(new Button("button-"+count++));
f1.validate();

}
});
}

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


重要:鼠标和键盘的监听事件例子程序

例子程序一:鼠标监听

but.addMouseListener(new MouseAdapter()
{
//int count=0;
public void mouseClicked(MouseEvent e)
{
//  if(e.getClickCount()==2)
//      System.out.println("鼠标双击按钮");

//  System.out.println("鼠标单击按钮");
//System.exit(0);

showFile();//显示到文本区中
}
/*
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标放进入按钮范围"+(++count)+"次");
}
*/
});


例子程序二:键盘监听

//添加键盘监听
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
//System.exit(0);
System.out.println("ctrl+enter is run");

//System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
}
});


其他知识点:

例子程序:将路径下的目录或文件列出

//将路径下的目录或文件列出
private void showFile()
{
String path=tf.getText();//获取文本框内容
File file=new File(path);//将路径封装成文件对象
//判断是否存在
if(file.exists())
{
ta.setText("");//清空文本区中的内容
//如果是目录
if(file.isDirectory())
{
String[] dir=file.list();//列出目录下的文件和目录
//遍历
for (String name : dir)
{
ta.append(name+"\r\n");//添加到文本区中
}
}
else
ta.append(file.getName());//如果是文件,则只显示该文件的名字
}
else
System.out.println("您输入的路径不存在");
}

public static void main(String[] args)
{
//运行窗体
new KeyAndMouseEvent();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: