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

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

2013-09-02 21:49 281 查看
ASP.Net+Android+IOS开发------期待与您交流
 
<图形化界面>
 
<图形化界面的使用方法,概念>

1. 容器

  * 窗口,面板,选项卡,可以存放其他容器或者组件

    * Frame窗口

    * Dialog FileDialog

2. 组件

  * 按钮,文本框,对话框,菜单,不能单独使用,必须放在容器中

    * Button按钮

    * TextArea多行文本

    * TextField文本字段,单行文本

    * 必须要添加到容器中

3. awt和swing

  * awt 调用了操作系统中的方法,完成图形界面,依赖系统,重量级

  * swing 纯java编写的图形界面,不依赖操作系统 轻量级

4. Frame类,构建窗体的类

  * 构造方法,传递字符串,窗口的标题栏

  * setSize(width,height)宽,高,单位是像素

  * setVisible(true)窗口显示了

  * setLocation

  * Toolkit.getDefaultToolkit().getScreenSize().width;获取屏幕的分辩率

  * setLayout(null)取消布局管理器,实现组件的任意位置的放置 (组件要定义尺寸和位置)

  * setBounds(横轴,纵轴,宽度,高度)

  * setMenuBar()设置菜单栏

5. Button类,按钮构建

  * 构造方法,传递字符串

 

6. 窗体的布局管理器

7. 事件的监听机制

  * 事件源,就是用户操作的那个组件

  * 事件,鼠标事件,键盘事件,窗体事件

  * 监听器,监听,等待这个事件的发生

    * 按钮事件源,为按钮添加了一个事件监听器,监听鼠标的单击事件,交给事件处理方式

  * 事件处理

    * 就是个方法

  点击红色的叉子,关闭程序

  * 事件源,窗体

  * 窗体事件

  * 监听什么?窗体事件操作,点击红叉子

  * 交给一个方法来处理

8. 适配器设计模式

  * 是将接口适配成用户想要的效果

  * 抽象类实现接口中的方法,并且这个抽象类中全部是普通方法

  * 子类继承抽象方法,覆盖你想要的方法

9.TextField组件

  * 构造方法

10. 键盘事件

  * KeyEvent e

     * getKeyCode() ASCII 

     * getKeyChar() 字符

     * consume()

  * 实现Ctrl+Enter键

    * isControlDown()判断是否按下Ctrl键

11. 鼠标事件

  * mouseClicked(MouseEvent e)鼠标点击事件  

  * mouseEntered(MouseEvent e)鼠标进入组件

  * mouseExited(MouseEvent e)鼠标离开组件

  * int getClickCount()返回在组件上,鼠标点击了多少次

12. Dialog对话框容器

  * 构造方法(所属窗体,标题,模式)

  * Label显示文字

13. awt的实例

  * 用户输入一个路径,展示这个路径中的有文件和文件夹

  * 使用的技术 IO awt

    * awt中需要的容器和组件

       * Frame

       * 文本框组件

       * Label组件

       * 按钮组件

       * 对话框

    * IO中需要哪些类

       * File

 

GUI练习

  * 实现步骤:

    A-- 先做界面

    B-- 事件的响应

      B1* 窗口的关闭

      B2* 点击按钮

          * 获取这个文本框中写的是什么

  * 获取到输入后,判断空

  * 封装成File对象,判断输入的目录有没有,判断是不是目录

  * 获取文件列表 、listFiles()

      B3* 输入后直接按下回车键

 下面是对GUI的整体性应用代码实现如下:

package cn.filelist;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.reflect.Field;
import java.security.PublicKey;
public class GuiDemo {
//定义窗体组件
private Frame frm= null;
//功能的使用说明
private Label fla = null;
//输入文本框组件
private TextField tf = null;
//确定按钮
private Button okbut = null;
//多行的文本,显示文件列表的
private TextArea ta=null;
//对话框容器
private Dialog dg =null;
//对话框上的文字提示组件
private Label dla = null;
//对话框上的确定按钮
private Button dbut = null;
//屏幕的宽度和高度
private static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
private static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
public GuiDemo(){
init();
}
private void init(){
//对窗体进行设置
frm = new Frame("文件列表功能");
frm.setBounds((WIDTH-550)/2, (HEIGHT-650)/2, 550, 650);
frm.setBackground(new Color(204,232,207));
frm.setLayout(null);
frm.setVisible(true);

//对窗体组件进行设置。
//功能的使用说明
fla = new Label("请输入路径,之后会显示路径下的全部文件名列表");
fla.setBounds(40,30,500,30);
frm.add(fla);

//对输入的单行文本框进行设置
tf = new TextField();
tf.setBounds(40, 70, 420, 20);
frm.add(tf);

//对确定按钮进行设置
okbut = new Button("确定");
okbut.setBounds(490, 70, 40, 20);
frm.add(okbut);

//对多行文本进行设置
ta = new TextArea();
ta.setBounds(40, 105, 425, 480);
ta.setEditable(false);
frm.add(ta);

//对话框的设置
//		构造一个最初不可见的 Dialog,
//		它带有指定的所有者 Frame、标题和模式。
dg = new Dialog(frm,"错误的提示信息",true);
dg.setBounds((WIDTH-600)/2, (HEIGHT-100)/2, 600, 100);
dbut =new Button("确定");
dg.setLayout(null);
myEvent();
}
//定义专门的方法专门处理各种事件
private void myEvent(){
frm.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//点击确定按钮的事件
okbut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getListFile();
}
});
//对话框中关闭
dg.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){closeDialog();}
});
//按钮的关闭
dbut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {closeDialog();}
});
//输入文本框的键盘事件,按下回车键
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code == KeyEvent.VK_ENTER){
getListFile();
}
}
});
}
private void closeDialog(){
dg.setVisible(false);
}
private void getListFile(){
//判断在文本框中输入的内容,按下确定之后如果正确则直接输出文件列表
//获取文本框中输入的内容
String path = tf.getText();
//判空,健壮性判断
if("".equals(path))
return;
//去掉空格方法
path = path.trim();
//创建文件类对象并传入字符串路径
File f = new File(path);
//判断是不是文件
if(!f.exists()){
//对话框出现的时机
//Label 对象是一个可在容器中放置文本的组件。
//一个标签只显示一行只读文本。
//文本可由应用程序更改,但是用户不能直接对其进行编辑
dla = new Label("蠢货你输入的路径  "+ path + "不存在!请重新输入");
dla.setBackground(Color.cyan);
dla.setBounds(150, 50, 400, 20);
dg.add(dla);
dbut.setBounds(270, 75, 50, 20);
dg.add(dbut);
dg.setVisible(true);
}else if(!f.isAbsolute()){
//否则是文件,则获取文件名列表
dla = new Label("二货你输入的"+path +"是文件请重新输入");
dla.setBounds(150, 50, 400, 20);
dg.add(dla);
dbut.setBounds(200, 75, 50, 20);
dg.add(dbut);
dg.setVisible(true);
}else {
//否则就是正确的路径了
ta.setText("");
File [] file = f.listFiles();
for(File ff:file){
//	ta.setText(ff+"");
ta.append(ff+"\t\n");
}
}
}

}

 

ASP.Net+Android+IOS开发------期待与您交流
 详细请查看:http://edu.csdn.net

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息