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

黑马程序员—JAVA基础—GUI(图形化界面编程)

2015-08-05 20:43 656 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、操作软件的两种方式

1、GUI(Graphical User Interface)图形用户接口,用图形的方式来变现软件,操作起来跟方便直观

2、GLI(Commandline User Interface )命令行用户接口,也就是dos命令行的方式,操作繁琐

不直观

二、GUI编程

1、java提供的的对象都存在java.awt和java.swing包中

2、awt和swing的区别

java.Awt:Abstract Window ToolKit (抽象窗口工具包),
需要调用本地系统方法实现功能。属重量级控件。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,
其中提供了更多的组件,而且完全由Java实现。增强了移植性,
属轻量级控件

三、继承关系



Container容器通过add方法添加其他组件

四、布局管理器(组件的摆放方式,5种)

        1、FlowLayout(流式布局管理器)
     从左到右的顺序排列。
     Panel默认的布局管理器。



        2、BorderLayout(边界布局管理器):如果没有指定组件的摆放位置,会填充整个窗体,再添加组件就会覆盖原来的组件
      东,南,西,北,中
      Frame默认的布局管理器。



        3、GridLayout(网格布局管理器)
      规则的矩阵



        4、GridBagLayout(网格包布局管理器):组件4位网格包式布局
      非规则的矩阵

        5、CardLayout(卡片布局管理器)

      选项卡



五、事件监听机制:事件源(组件)、事件(event)、监听器(Listener)、事件处理(自定义处理方式)

流程图



练习1:定义一个界面,输入硬盘地址后,将地址下的文件以及文件夹的名称显示出来

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class ShowFilesList
{
private Frame f;
private TextField tf;
private TextArea ta;
private Button show;

private Dialog dia;
private Label l;
private Button but;
ShowFilesList()
{
init();
}
public void init()
{
f = new Frame("文件管理器");//定义一个窗体对象
/*
设置位置,第一个参数为窗体与电脑屏幕左边的距离
第二个参数为窗体与电脑屏幕右边的距离
第三个参数为窗体的长度(横坐标)
第三个参数为窗体的宽度(纵坐标)
*/
f.setBounds(400,100,600,500);
f.setVisible(true);//设置窗体可见
f.setLayout(new FlowLayout());//设置为流式布局

tf = new TextField(60);//单行文本输入框,用于输入地址
show = new Button("转到");//按钮,用于触发显示地址的下的文件以及文件夹名称的事件
ta = new TextArea(25,60);//多行文本输入框,用于显示文件以及文件夹名称

dia = new Dialog(f,"错误信息",true);//弹出错误信息的对话框
dia.setBounds(500,200,200,150);//同样设置对话框的大小和边界
dia.setLayout(new FlowLayout());//设置对话框的布局方式为流式布局
l = new Label();//标签,用于显示错误信息
but = new Button("确定");//用于关闭对话框
dia.add(l);
dia.add(but);

f.add(tf);
f.add(show);
f.add(ta);
myEvent();
}
//各种事件
public void myEvent()
{
//给对话框注册窗口监听器,用于点关闭按钮就将对话框隐藏
dia.addWindowListener(new WindowAdapter()//匿名内部类,窗口监听器适配器
{
//覆盖窗口关闭的方法
public void windowClosing(WindowEvent e)
{
dia.setVisible(false);
}
});
//给对话框的按钮添加动作监听器
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dia.setVisible(false);
}
});
//给单行文本款添加键盘监听器,用于点击回车键就触发,显示文件的方法
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
//给转到按钮添加动作监听器
show.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showDir();
}
});
//给主窗体添加窗口监听器
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//显示文件以及文件夹的方法,用到File类中的方法
public void showDir()
{
String path = tf.getText();
File dir = new File(path);
//判断文件是否存在以及是否是文件夹
if (dir.exists() && dir.isDirectory())
{
ta.setText("");//每显示一次,就将原来显示的内容清空
String[] files = dir.list();//显示目录下所有文件以及文件夹的名称
for(String s:files)
{
//多行文本框添加内容的方法,类似字符缓冲区对象
ta.append(s+"\t\n");
}
}
else
{
//文件不存在或者不是文件夹,就给对话框中的标签设置提示内容
String info = path+"路径不存在!";
l.setText(info);
dia.setVisible(true);//设置对话框显示
}

}
public static void main(String[] args)
{
new ShowFilesList();
}
}





练习2:定义一个图形化界面,实现打开查看、编辑、保存文本文件

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class FileBrowser
{
private Frame f;
private TextArea ta;
private MenuBar mb;
private Menu m;
private MenuItem open,save,exit;
private FileDialog openFile,saveFile;
private File file;
FileBrowser()
{
init();//在构造函数中初始化界面
}
public void init()
{
f = new Frame("记事本");
f.setBounds(400,100,600,500);
f.setVisible(true);

ta = new TextArea();
mb = new MenuBar();//设置菜单选项
m = new Menu("文件");//设置菜单
open = new MenuItem("打开");//分别设置三个字菜单
save = new MenuItem("保存");
exit = new MenuItem("退出");
m.add(open);//分别三个子菜单添加到菜单选项中
m.add(save);
m.add(exit);
mb.add(m);
f.setMenuBar(mb);//给窗体设置菜单选项
f.add(ta);

openFile = new FileDialog(f,"打开文件",FileDialog.LOAD);//打开文件对话框,LOAD
saveFile = new FileDialog(f,"保存文件",FileDialog.SAVE);//保存文件对话框,SAVE
myEvent();
}
public void myEvent()
{
open.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ea)
{
openFile.setVisible(true);
String filePath = openFile.getDirectory();//从文件对话框中获取文件路径
String fileName = openFile.getFile();//从文件对话框中获取文件名
if(filePath==null || fileName==null)//先判断文件路径和文件名是否问空
return ;//如果为空就返回,不执行下面代码
ta.setText("");
file = new File(filePath,fileName);
BufferedReader bfr = null;
try
{
bfr = new BufferedReader(new FileReader(file));
String line = null;
while ((line=bfr.readLine())!=null)
{
ta.append(line+"\r\n");//在写入文件的时候要加入回车符标记
}
}
catch (IOException e)
{
throw new RuntimeException("打开文件失败");
}
finally
{
try
{
if(bfr!=null)
bfr.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
});
save.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ea)
{
if (file==null)//先判断文件是否存在,如果存在就不弹出文件对话框,直接保存
{
saveFile.setVisible(true);
String filePath = openFile.getDirectory();
String fileName = openFile.getFile();
if(filePath==null || fileName==null)//读取文件同样进行判断
return ;
file = new File(filePath,fileName);
}
BufferedWriter bfw = null;
try
{
bfw = new BufferedWriter(new FileWriter(file));
String s = ta.getText();
bfw.write(s);
}
catch (IOException e)
{
throw new RuntimeException("保存失败");
}
finally
{
if (bfw!=null)
{
try
{
bfw.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
}
});
exit.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 FileBrowser();
}
}

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