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

黑马程序员_源自梦想 GUI

2013-10-28 20:28 197 查看
------- android培训java培训、期待与您交流!
---------

GUI

全称:Graphical User Interface(图形用户接口)

两个很重要的包

java.Awt:(Abstract Window ToolKit抽象窗口工具包)

需要调用本地系统方法实现功能.属重量级控件,跨平台性不是很好.

javax.Swing: 在AWT的基础上,建立的一套图形化几面系统.

构成:

Component(构件,组件)

|--Container(容器,特殊的子类)

|--Window(窗口)

|--Frame(框架,窗体)

|--Dialog(对话框)

|--Panel(面板)

//下面与Container同级,但是不能添加组件

|--Button(按钮)

|--Label(标签,作用在于封装文字)

|--Checkbox(复选框)

布局管理器

|-- FlowLayout(流式布局管理器)

从左到右的顺序排列

|-- BorderLayout(边界布局管理器)

东,南,西,北,中(默认居中 添加新组件就会覆盖)

|--GridLayout(网格布局管理器) 计算器(规则的矩阵)

|--CardLayout(卡片布局管理器) 选项卡(右键 -->属性)

|--GridBagLayout(网格包布局管理器) 非规则布局

Frame

|--component是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。

|--container add(Component comp,int index) 可以添加索引

将指定的组件添加到此容器的给定位置上

container能够添加组件 那些组件都是对象,它把对象都添加到窗体当中,代表了 (它内部其实封装了一个集合),它把这些组件对象都添加到集合当中,都带着角标。所以你可以在其任意的位置上添加元素.

|--Frame()构造一个最初不可见的Frame新实例()

通过5步来完成,图形化界面的制作

1.创建frame窗体

2.对窗体进行基本设置

比如大小,位置,布局

3.定义组件

4.将组件通过窗体的add方法添加到窗体中。

5.让窗体显示,通过setVisible(true).

public class AwtDemo{
public static void main(String[] args)
{
Frame f = new Frame("my awt");
f.setSize(500,100);   //设置长宽 500,100
f.setLocation(300,,200);//设置本地位置(top,left)  300,200
f.setVisible(true); //显示窗体
f.setLayout(new FolwLayout());  // 创建流式布局管理器

Button b = new Button("我是一个按钮");  //
f.add(b);//用容器的add方法将这个按钮加进来
}
}

事件监听机制

事件监听机制的组成:

1,事件源

2,事件

3,监听器

4,事件处理方式

事件监听机制的特点


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

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

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

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

class AwtDemo {
public static void main(String[] args)
{

Frame f = new Frame("my awt");

//设置窗体大小
f.setSize(500,400);

//设备位置位置,距左上方
f.setLocation(300,20);

//设置布局管理
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("打开窗体");
}
});
//显示窗体
f.setVisible(true);
}
}
//应为WindowListener的子类windowASdapter已经实现了WindowListener接口.
//并覆盖了其中的所有方法.那么我只需要继承自WindowAdapter覆盖我需要的方法即可
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.out.println("window closing");
System.exit(0);
}
}

//键盘事件
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<= KeyEvent.VK_9))
{
e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件。
System.out.println(code+"您输入的是非法的");

}
}
});

//给but添加一个监听
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
//组合按键,ctrl+enter
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
System.exit(0);

//如果按键是esc就退出
//if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
// System.exit(0);

//KeyEvent.getKeyText(e.getKeyCode())打印输入内容
//System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
}
});

//鼠标事件
but.addMouseListener(new MouseAdapter()
{
int count = 1;
int clickcount = 1;
//鼠标进入事件
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标进入该按钮"+count++);
}
public void mouseClicked(MouseEvent e)
{
//getClickCount()获取鼠标连击次数
if(e.getClickCount()==2)
System.out.println("鼠标双击事件"+clickcount++);
}
});
//TextArea列出指定路径目录和文件名
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
/*
String text = tf.getText();
//System.out.println(text);
ta.setText(text);
tf.setText("");//清空内容
*/

String dirPath = tf.getText();
File dir = new File(dirPath);//封装成对象
if(dir.exists() && dir.isDirectory())//dir存在,并且是目录
{
ta.setText("");//清空上一次查询

String[] names = dir.list();
for(String name : names)
{
//ta.setText(name+"\r\n");
ta.append(name+"\r\n");
}
}
}
});

菜单

|--MenuBar菜单条

|--Menu菜单

|--MenuItem菜单项

public class MyMenuDemo {
private Frame f;
private MenuBar mb;// 菜单栏
private Menu m, subMenu;// 菜单
private MenuItem closeItem, subItem;// 子菜单

MyMenuDemo() {
init();
}
public void init() {
f = new Frame();
f.setBounds(100, 100, 500, 600);
f.setLayout(new FlowLayout());

mb = new MenuBar();
m = new Menu("文件");
closeItem = new MenuItem("退出");
subItem = new MenuItem("子条目");
subMenu = new Menu("子菜单");

f.setMenuBar(mb);// 添加菜单
mb.add(m);// 添加"文件"
m.add(subMenu);// 文件下面添加子菜单
subMenu.add(subItem);// 子条目
m.add(closeItem);

f.setVisible(true);
}

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