黑马程序员技术交流社区
标题:
黑马程序员-Java基础-GUI编程事例-资源管理器-我的记事本
[打印本页]
作者:
QQheima
时间:
2015-6-11 22:54
标题:
黑马程序员-Java基础-GUI编程事例-资源管理器-我的记事本
学习GUI编程后,根据毕老师的讲解,自己做了两个练习项目。
一个是类似于打开我的电脑后的资源管理器窗口。在地址栏输入路径就可以列出该目录下的所有文件夹和文件,如果地址错误,就会弹出窗口提示。
另一个是类似于记事本的文本编辑器,实现了新建、打开、保存文本文档的功能。
以下下是源码:
一、资源管理器
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileManager {
//定义窗体对象
private Frame fr;
//定义文本框
TextField tf;
//定义按钮对象
private Button btn;
//定义文本框区域
TextArea ta;
//定义提示对话框
Dialog dialog;
//对话框提示信息
Label label;
//提示信息确认按钮
Button btnOk;
//定义构造函数,并调用窗体初始化方法
public FileManager(){
init();
}
//定义窗体初始化方法
private void init(){
//实例化控件
fr = new Frame("我的电脑");
btn = new Button("转到");
tf = new TextField(40);
ta = new TextArea(13,50);
dialog = new Dialog(fr,"错误提示",true);
label = new Label();
btnOk = new Button("确认");
//组建提示框
dialog.setBounds(380, 300, 180, 120);
dialog.setLayout(new FlowLayout());
dialog.add(label);
btnOkAddListener();
dialog.add(btnOk);
//设置窗体属性
fr.setBounds(300, 200, 400, 300);
fr.setLayout(new FlowLayout());
//添加监听事件
frAddListener();
tfAddListener();
btnAddListener();
//将控件添加到窗体
fr.add(tf);
fr.add(btn);
fr.add(ta);
//显示窗体
fr.setVisible(true);
}
//文本框添加监听事件
private void tfAddListener(){
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int kc = e.getKeyCode();
// if(!(kc >= KeyEvent.VK_0 && kc <= KeyEvent.VK_9)){
// System.out.println("非法输入:"+e.getKeyChar());
//取消程序默认要执行的操作
// e.consume();
// }
if(kc == KeyEvent.VK_ENTER){
showFile();
}
}
});
}
//Button按钮添加监听事件
private void btnAddListener(){
btn.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
showFile();
}
});
}
//提示信息确认按钮添加监听事件的方法
private void btnOkAddListener(){
//监听激活事件(可以是鼠标点击,或者键盘点击)
btnOk.addActionListener(new ActionListener(){
//实现构造函数ActionListener中的构造方法
public void actionPerformed(ActionEvent e){
//隐藏提示框
dialog.setVisible(false);
}
});
}
//显示文件目录的方法
private void showFile(){
String dirPath = tf.getText();
File dir = new File(dirPath);
if(dir.exists()&&dir.isDirectory()){
ta.setText("");
for(String name:dir.list()){
ta.append(name+"\r\n");
}
}else{
label.setText("非法地址:"+dirPath);
dialog.setVisible(true);
}
}
//窗体添加监听事件的方法
private void frAddListener(){
//Frame窗体对象调用添加监听事件方法,创建匿名函数对象
fr.addWindowListener(new WindowAdapter(){
//复写父类WindowAdapter中的方法
public void windowClosing(WindowEvent e){
//退出系统
System.exit(0);
}
});
}
public static void main(String[] args){
new FileManager();
}
}
复制代码
运行结果:
1.jpg
(46.46 KB, 下载次数: 22)
下载附件
2015-6-11 22:52 上传
二、文本编辑器
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileEditor {
//定义成员对象
private Frame fr;
private MenuBar bar;
private Menu fileMenu, optMenu;
private MenuItem closeItem, openItem,saveItem;
private TextArea ta;
File file;
private FileDialog fileDialog;
//定义构造方法
public FileEditor(){
init();
}
//定义窗体初始化方法
private void init(){
//实例化窗体对象
fr = new Frame("文本编辑器");
fr.setBounds(300, 200, 700, 500);
//实例化菜单
bar = new MenuBar();
fileMenu = new Menu("文件");
optMenu = new Menu("操作");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("关闭");
//组织菜单
optMenu.add(openItem);
optMenu.add(saveItem);
fileMenu.add(optMenu);
fileMenu.add(closeItem);
bar.add(fileMenu);
//实例化编辑框、文件对话框
ta = new TextArea();
fileDialog = new FileDialog(fr);
//组织窗体
fr.add(ta);
fr.setMenuBar(bar);
addListener();
//将窗体显示出来
fr.setVisible(true);
}
//监听器
private void addListener(){
//关闭菜单监听器
closeItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
//打开菜单监听器
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fileDialog.setTitle("打开文件");
fileDialog.setMode(FileDialog.LOAD);
openFile();
}
});
//保存菜单监听器
saveItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fileDialog.setTitle("保存文件");
fileDialog.setMode(FileDialog.SAVE);
saveFile();
}
});
//关闭窗体监听器
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
private void openFile(){
//打开文件对话框
fileDialog.setVisible(true);
//获取文件属性
String dirPath = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
//判断文件是否存在
if(null!=dirPath && null!=fileName){
//清空编辑框中的原有内容
ta.setText("");
file = new File(dirPath,fileName);
BufferedReader bufr = null;
//读取文件内容
try{
bufr = new BufferedReader(new FileReader(file));
String line = null;
//将读取的内容写入文本框编辑区
while((line=bufr.readLine())!=null){
ta.append(line+"\r\n");
}
}catch(IOException e){
throw new RuntimeException(e);
}finally{
if(null!= bufr){
try{
bufr.close();
}catch(IOException e){
System.out.println("关闭流失败。");
}
}
}
}
}
private void saveFile(){
//判断文件是否存在
if(null==file){
//弹出保存文件对话框
fileDialog.setVisible(true);
String dirPath = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
if(dirPath==null || fileName==null){
return;
}
file = new File(dirPath,fileName);
}
BufferedWriter bw = null;
try{
bw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();
bw.write(text);
}catch(IOException e){
throw new RuntimeException(e);
}finally{
if(null!= bw){
try{
bw.close();
}catch(IOException e){
System.out.println("关闭流失败。");
}
}
}
}
public static void main(String[] args) {
//创建窗体对象
new FileEditor();
}
}
复制代码
运行结果:
2.jpg
(86.33 KB, 下载次数: 7)
下载附件
2015-6-11 22:53 上传
作者:
QQheima
时间:
2015-6-11 23:01
唉,都木有人回帖,能不能自己顶一下啊,好悲凉的气氛~~~{:2_33:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2