黑马程序员—GUI(图形用户界面)

------- android培训java培训、期待与您交流! ----------

GUI(图形用户界面)

GUI Graphical User Interface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。

CLI Command line User Interface (命令行用户接口)
就是常见的Dos命令行操作。 
需要记忆一些常用的命令,操作不直观。

Awt和Swing

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

需要调用本地系统方法实现功能。属重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,

而且完全由Java实现。增强了移植性,属轻量级控件。

继承关系图

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



布局管理器

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

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

代码体现:

Frame  f = new Frame(“my window”);
f.setSize(500,400);//设置窗体大小
f.setLocation(300,200);//设置窗体出现在屏幕的位置

f.setLayout(new FlowLayout());//流式布局

Button b = new Button("我是按钮");//定义一个组件按钮
f.add(b);//将按钮添加到窗体中
f.setVisible(true);//让窗体显示

事件监听机制组成

1,事件源(组件)
2,事件(Event)
3,监听器(Listener)
4,事件处理(引发事件后处理方式)

事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作都封装到监听器中。

事件监听机制流程图



练习1:键盘监听事件练习

 

练习2:列出指定目录内容

 

 


菜单继承体系


MenuBar,Menu,MenuItem
先创建菜单条,再创建菜单,每一个菜单中建立菜单项。
也可以菜单添加到菜单中,作为子菜单。
通过setMenuBar()方法,将菜单添加到Frame中。

练习3:打开文件与保存文件

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenuTest 
{

private Frame f;

private MenuBar mb;

private TextArea ta;

private Menu fileMenu;

private MenuItem openItem,saveItem,closeItem;

private FileDialog openDia,saveDia;

private File file;

MyMenuTest()

{

init();

}

public void init()

{

f =new Frame("my window");

f.setBounds(300,100,650,600);


mb = new MenuBar();

ta = new TextArea();

//初始化各个条目

fileMenu = new Menu("文件");

openItem = new MenuItem("打开");

saveItem = new MenuItem("保存");

closeItem = new MenuItem("退出");

//给菜单添加条目

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(closeItem);

mb.add(fileMenu);


f.setMenuBar(mb);//将菜单条加入窗体中


//设置打开和保存对话框

openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);

saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);


f.add(ta);

myEvent();

f.setVisible(true);

}

private void myEvent()

{

//保存条目事件监听

saveItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

if(file==null)

{

saveDia.setVisible(true);

String dirPath =saveDia.getDirectory();

String fileName = saveDia.getFile();

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

return ;

file = new File(dirPath,fileName);

}

try

{

//将文件存入字符流缓冲区

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

String text = ta.getText();

bufw.write(text);

bufw.close();

}

catch (IOException ex)

{

throw new RuntimeException();

}

}

});

//打开条目监听事件

openItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

openDia.setVisible(true);

String dirPath = openDia.getDirectory();

String fileName = openDia.getFile();

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

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

return ;

ta.setText("");

file = new File(dirPath,fileName);

try

{

  //用字符流缓冲区读取文件

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

String line =null;

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

{

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

}

}

catch (IOException ex)

{

throw new RuntimeException("文件读取失败");

}

}

});

closeItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}

});

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

public static void main(String[] args) 

{

new MyMenuTest();

}

}

------- android培训java培训、期待与您交流! ----------


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值