------ android培训、java培训、java学习型技术博客、期待与您交流! ----------
图形化界面
1 概念:
GUI是Graphical User Interface的缩写,图形用户接口
CLI是Command line User Interface的缩写 ,命令行用户接口,就是常见的Dos命令行操作。需要记忆一些常用的命令,操作不直观。
如:创建文件夹,或者删除文件夹等
2 Awt和Swing:
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
java.Awt:Abstract Window ToolKit (抽象窗口工具包),依赖于本地系统平台,如颜色样式显示。属重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。
增强了移植性,跨平台,属轻量级控件。
3 继承关系:
Component:是GUI图形界面的组成单元。
|--Button:按钮
|--Label:标签
|--Checkbox:检查框
|--TextComponent:文本组件
|--TextArea:文本区
|--TextField:文本字段
|--Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其它组件或容器进来。
|--Window:窗口
|--Panel:镶嵌板
|--Frame:框架
|--Dialog:对话
|--FileDialog:文件对话框
4 布局管理:
FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。
BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。
GridLayout(网格布局管理器):规则的矩阵
GridBagLayout(网格包布局管理器):非规则的矩阵
CardLayout(卡片布局管理器):选项卡
5 图形演示
键盘事件
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
public static void main(String[] args) {
Frame f = new Frame("键盘事件");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//添加一个组件,文本框 TextFiled
TextField tf = new TextField();
tf.setBounds(100, 100, 100, 30);
//void setEchoChar(char c)
tf.setEchoChar('*');
f.add(tf);
//为文本框,添加键盘监听
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
//e.setKeyChar('*');
//System.out.println("!!!!!!!!");
/* char c = e.getKeyChar();
int x = e.getKeyCode();
System.out.println(c+"..."+x);*/
int code = e.getKeyCode();
/*if(!(code>= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){
//System.out.println("你按下的是数字");
e.consume();
}*/
//实现ctrl+enter
if(e.isControlDown() && code==KeyEvent.VK_ENTER){
System.out.println("按下了组合键");
}
}
});
}
}
鼠标事件
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo1 {
public static void main(String[] args) {
Frame f = new Frame("鼠标事件");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//窗体添加一个按钮
Button but = new Button("确定");
but.setBounds(100, 100, 80, 30);
f.add(but);
//按钮注册鼠标事件、
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==10)
System.out.println("点击了确按钮");
}
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标移入到组件中");
}
public void mouseExited(MouseEvent e) {
System.out.println("鼠标离开组件");
}
});
}
}
对话框
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo2 {
public static void main(String[] args) {
Frame f = new Frame("对话框");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
Button but = new Button("确定");
but.setBounds(100, 100, 80, 30);
f.add(but);
//对话框组件
final Dialog d = new Dialog(f,"错误提示对话框",true);
d.setLayout(null);
d.setBounds(200, 100, 500, 300);
//添加一个标签Lable
Label l = new Label();
d.add(l);
l.setText("你选择的人是不合适的");
l.setBounds(100, 100, 200, 40);
l.setFont(new Font("微软雅黑",Font.BOLD,20));
//注册按钮的点击事件
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
d.setVisible(true);
}
});
//对话框的窗体事件
d.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){
d.setVisible(false);
}
});
}
}
菜单
package cn.itcast.gui;
/*
* 菜单
*/
import java.awt.*;
import java.awt.event.*;
public class FrameDemo3 {
public static void main(String[] args) {
Frame f = new Frame("菜单演示");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//创建Menubar对象
MenuBar mb = new MenuBar();
f.setMenuBar(mb);
Menu file = new Menu("文件");
Menu edit = new Menu("编辑");
mb.add(file);
mb.add(edit);
//建立MenuItem
MenuItem open = new MenuItem("打开");
MenuItem save = new MenuItem("保存");
file.add(open);
file.add(save);
//子菜单,对编辑菜单进行设置,添加子菜单,删除--》删除选定
Menu delete = new Menu("删除");
//是将Menu对象,添加到另一个Menu对象
edit.add(delete);
//建立删除选定
MenuItem deleteOk = new MenuItem("删除选定");
delete.add(deleteOk);
delete.add(new MenuItem("删除选定的行"));
}
}
/* open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("打开菜单");
}
});*/
事件列表
package cn.itcast.guifilelist;
public class FileListTest {
public static void main(String[] args) {
new FileList();
}
}
package cn.itcast.guifilelist;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileList {
public FileList(){
init();
}
//定义窗体
private Frame frm ;
//定义用户输入的文本框
private TextField tf ;
//定义按钮
private Button but ;
//定义展示文件列表的多行文本
private TextArea ta ;
//定义对话框
private Dialog da ;
//对话框上的文本标签label 确定按钮
private Label lbl;
private Button butDa ;
//定义获取屏幕分辩率的方法
private static final int width = Toolkit.getDefaultToolkit().getScreenSize().width;
private static final int height = Toolkit.getDefaultToolkit().getScreenSize().height;
private void init(){
frm = new Frame("文件列表显示");
frm.setBounds((width-500)/2, (height-550)/2, 500, 550);
frm.setBackground(new Color(204, 232, 207));
frm.setLayout(null);
frm.setVisible(true);
//窗体的初始化定义完毕
//用户输入文本框初始化定义
tf = new TextField();
tf.setBounds(50, 60, 300, 22);
frm.add(tf);
//用户的确定按钮
but = new Button("确定");
but.setBounds(380, 60, 50, 22);
frm.add(but);
//显示文件列表的区域
ta = new TextArea();
ta.setBounds(50, 100, 380, 420);
frm.add(ta);
//对话框初始化
da = new Dialog(frm,"错误的提示",true);
da.setBounds((width-400)/2, (height-100)/2, 400, 100);
butDa = new Button("确定");
myEvent();
}
//定义方法,处理事件
private void myEvent(){
//对窗体添加窗体事件
frm.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){System.exit(0);}
});
//对确定按钮,进行事件的添加
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
//调用一个方法,专门处理文件的显示
fileList();
}
});
//对话框的关闭效果
da.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){da.setVisible(false);}
});
//对话框按钮添加鼠标事件,关闭对话框
butDa.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){ da.setVisible(false);}
});
//对文本框添加键事件
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code==KeyEvent.VK_ENTER)
fileList();
}
});
}
//处理鼠标点击后的文件显示
private void fileList(){
String path = tf.getText();
if("".equals(path)||path==null)
return;
//将输入的文本内容,封装成File对象
File f = new File(path);
if(!f.exists()){
//对话框出现了
da.setLayout(null);
lbl = new Label();
lbl.setText("您输入的"+path+"不存在");
lbl.setBounds(70, 40, 200, 30);
da.add(lbl);
butDa.setBounds(120, 72, 50, 25);
da.add(butDa);
da.setVisible(true);
}else{
ta.setText("");
String line = null;
String os = System.getProperty("os.name");
if(os.substring(0, 7).equals("Windows"))
line = "\r\n";
else
line = "\r";
String[] str = f.list();
//System.out.println(str);
for(String s : str){
// ta.setText(s);
ta.append(s+line);
}
}
}
}
模仿记事本
package cn.itcast.notepad;
public class NotepadTest {
public static void main(String[] args) {
new Notepad();
}
}
package cn.itcast.notepad;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Notepad {
public Notepad() {
init();
}
// 定义窗体容器
private Frame frm;
//定义菜单酒吧
private MenuBar mb;
//定义文件菜单
private Menu file;
//定义子菜单,保存,打开
private MenuItem save,open;
//定义多行文本地域
private TextArea ta ;
//文件对话框
private FileDialog fd ;
private String path;
private String fileName;
// 定义获取屏幕分辩率的方法
private static final int width = Toolkit.getDefaultToolkit()
.getScreenSize().width;
private static final int height = Toolkit.getDefaultToolkit()
.getScreenSize().height;
private void init() {
frm = new Frame("模仿记事本");
frm.setBounds((width - 800) / 2, (height - 600) / 2, 800, 600);
frm.setBackground(new Color(204, 232, 207));
frm.setLayout(null);
frm.setVisible(true);
//初始化菜单
mb = new MenuBar();
frm.setMenuBar(mb);
file = new Menu("文件");
save = new MenuItem("保存");
open = new MenuItem("打开");
mb.add(file);
file.add(open);
file.add(save);
//初始化文本区域
ta = new TextArea();
ta.setBounds(30, 60, 730, 500);
frm.add(ta);
myEvent();
}
private void myEvent() {
//窗体事件
frm.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//打开菜单添加事件监听,活动事件
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//打开 windows资源管理器对话框,FileDialog
fd = new FileDialog(frm,"打开文件",FileDialog.LOAD);
fd.setVisible(true);
//如何知道用户选择什么文件,或者是什么也没有选呢
path = fd.getDirectory();//获取目录,点击取消 返回null
fileName = fd.getFile();//获取文件名
//进行健壮性判断
if(path == null || fileName == null)
return ;
//用户确实选择了文件,IO技术读取文件
readFile(path, fileName);
}
});
//保存菜单添加事件监听
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(path==null || fileName==null ){
fd = new FileDialog(frm,"保存文件",FileDialog.SAVE);
fd.setVisible(true);
path = fd.getDirectory();
fileName = fd.getFile();
}
if(path == null || fileName == null)
return;
writeFile(path, fileName);
}
});
}
//保存文件的方法,保存用户指定的文件
private void writeFile(String path,String fileName){
//将路径和文件名封装成File对象
File f = new File(path,fileName);
FileWriter fw = null;
try{
fw = new FileWriter(f);
fw.write(ta.getText());
fw.flush();
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("保存失败");
}finally{
try{
if(fw!=null)
fw.close();
}catch(IOException e){
}
}
}
//读取用户选择的文件,并将文件显示在文本区域内
private void readFile(String path,String fileName){
//将文件和目录封装成File对象
File f = new File(path,fileName);
//IO技术封装文件,并读取文件,追加到文本区域
BufferedReader bfr = null;
try{
bfr = new BufferedReader(new FileReader(f));
String line = null;
ta.setText("");
while((line = bfr.readLine())!= null){
ta.append(line+"\r\n");
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("文件读取失败");
}finally{
try{
if(bfr!=null)
bfr.close();
}catch(IOException e){
throw new RuntimeException("文件关闭失败");
}
}
}
}
------ android培训、java培训、java学习型技术博客、期待与您交流! ----------