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

黑马程序员:JavaGUI

2014-01-15 21:46 393 查看
-------
android培训、java培训、期待与您交流! ----------

一、GUI概述

GUI

Graphical User Interface(图像化用户接口)

用图形的方式,来显示计算机操作的界面,这样更方便更直观。

CLI

Command Line User Interface(命令行用户接口)

就是常见的Dos命令行

需要记忆一些常用的命令,操作不直观。

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。

二、Awt与Swing

java.Awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属于重量级控件。

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

三、布局管理器

容器中的组件的排放方式,就是布局。

常见的布局管理器:

FlowLayout(流式布局管理器)

从左到右的顺序排放

Panel默认的布局管理器

BorderLayout(边界布局管理器)

东、南、西、北、中

Frame默认的布局管理器

Gridlayout  (网格布局管理器)

规则的矩阵

GardLayout(卡片布局管理器)

选项卡

GridbagLayout(网格包布局管理器)

非规则矩阵

四、Frame

Frame 是带有标题和边界的顶层窗口。

frame 的大小包括边界指定的所有区域。边界区域的尺寸可以使用 getInsets 方法获得,但是,由于这些尺寸是与平台相关的,因此在通过调用 pack或 show 将 frame 设置为可显示的之前,无法获得有效的 insets 值。由于 frame 的总大小包括了边界区,因此边界有效地模糊了 frame 的部分区域,约束了可用于在矩形中呈现和/或显示子部件的区域,矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height
- (insets.top + insets.bottom)。

frame 的默认布局为 BorderLayout。

创建简单的图形化界面:

1、创建frame窗体

2、对窗体进行简单的设置

3、定义组件

4、将组件添加到窗体

5、让窗体显示

例:

package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class AwtDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frame = new Frame("我的第一个窗口");
frame.setSize(500, 300); //设置窗口的长和宽
frame.setLocation(300, 200); //设置窗口的初始化位置
frame.setLayout(new FlowLayout()); //设置布局方式
Button button1 = new Button("我是一个button");// 创建button
frame.add(button1); //添加button到frame
frame.setVisible(true); //设置窗口为可见
}

}

五、事件监听机制组成

1、事件源(组件):awt或swing包中那些图像界面组件

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

3、监听器:将可以触发某一事件的动作都已经封装到监听器中

以上三者,在java中都已经定义好了。直接获取其器对象来用就可以了。

我们要做的事情就是对动作进行处理。

4、事件处理。

六、窗体事件

窗体关闭事件
例:
package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frame = new Frame("我的第一个窗口");
frame.setSize(500, 300);					//设置窗口的长和宽
frame.setLocation(300, 200);				//设置窗口的初始化位置
frame.setLayout(new FlowLayout());			//设置布局方式
Button button1 = new Button("我是一个button");// 创建button
frame.add(button1);								//添加button到frame
frame.addWindowListener(new Mywin());
frame.setVisible(true);						//设置窗口为可见
}

}

class Mywin extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}


七、Action事件

package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class FrameDemo {

/**
* @param args
*/
private Frame frame;
private Button button;
FrameDemo()
{
init();
}
public void init() {
frame = new Frame("my frame");
frame.setBounds(300,100,600,500);
frame.setLayout(new FlowLayout());
button = new Button("my button");
frame.add(button);

//加载窗体事件
myevent();
frame.setVisible(true);
}
private void myevent() {
frame.addWindowListener(new WindowAdapter() {
public void windowC
4000
losing(WindowEvent e) {
System.exit(0);
}
});

//让按钮具备退出程序的功能
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("exit");
System.exit(0);

}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new FrameDemo();
}

}


八、鼠标、键盘事件

package com.java;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseAndKey {

/**
* @param args
*/
private Frame frame;
private Button button;

MouseAndKey()
{
init();
}
public void init() {
frame = new Frame("my frame");
frame.setBounds(300,100,600,500);
frame.setLayout(new FlowLayout());
button = new Button("my button");
frame.add(button);

//加载窗体事件
myevent();
frame.setVisible(true);
}
private void myevent() {
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

//让按钮具备退出程序的功能
// button.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent arg0) {
// // TODO Auto-generated method stub
// System.out.println("exit");
// System.exit(0);
//
// }
// });
//鼠标事件监听
button.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入该组件");

}
});
//键盘事件监听
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
System.exit(0);
}

}
});

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MouseAndKey();
}

}


九、简单的小程序
简单的列出磁盘路径的小程序。

package com.java;

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class AreaDemo {

/**
* @param args
*/
private Frame frame;
private Button button;
private TextArea textArea;
private TextField textField;
private Dialog dialog;
private Button okbutton;
private Label label;
AreaDemo(){
init();
}

public void init() {
frame = new Frame("my frame");
frame.setBounds(300,100,600,500);
frame.setLayout(new FlowLayout());

textField = new TextField(30);
button = new Button("转到");
textArea = new TextArea(15,40);

frame.add(textField);
frame.add(button);
frame.add(textArea);

frame.setVisible(true);
dialog = new Dialog(frame,"提示信息",true);
dialog.setBounds(400,200,240,150);
dialog.setLayout(new FlowLayout());
label = new Label();
okbutton = new Button("确定");
dialog.add(label);
dialog.add(okbutton);
myevent();

}

public void myevent() {
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String dirPath = textField.getText();
File dir = new File(dirPath);
if (dir.exists()&&dir.isDirectory()) {
textArea.setText("");
String[] names = dir.list();
for(String name:names )
textArea.append(name+"\r\n");

}else{
String infoString = "您输入的信息:"+dirPath+"错误!请重新输入。";
label.setText(infoString);
dialog.setVisible(true);

}
}
});
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dialog.setVisible(false);
}
});
okbutton.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
dialog.setVisible(false);
}
});

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new AreaDemo();
}

}


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