今天闲来没事,自己写了一个简易的记事本,需要java GUI编程,一个文本输入框JTextArea,一条菜单条JMenuBar,两个JMenu,两个JMenuItem,然后就是模仿你自己电脑自带的记事本那样大致写,模仿他的布局。利用java中的文件操作,实现记事本的功能。(因为这个记事本就是对文本的操作,自己用BufferedReader,BufferedWriter,效率高)
这里我先把代码附在这里:
package com.notepad;
/*
* 我的记事本(功能+开发)
*/
import java.io.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Note extends JFrame implements ActionListener{
//创建组件
JTextArea jta = null;
//创建菜单条
JMenuBar jmb = null;
//第一个JMenue
JMenu jm1 = null;
//第二个JMenue
JMenu jm2 = null;
//定义JMenuItem(JMenue里边具体的选项)
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
//主函数
public static void main(String[] args) {
Note n1 = new Note();
}
//在构造函数中完成初始化
public Note(){
jta = new JTextArea();
jmb = new JMenuBar();
jm1 = new JMenu("文件");
jm2 = new JMenu("编辑");
jmi1 = new JMenuItem("打开");
jmi2 = new JMenuItem("保存");
//设置JTextArea的字体
Font mf = new Font("隶书",Font.PLAIN,20);
jta.setFont(mf);
//注册监听
jmi1.addActionListener(this);
jmi2.addActionListener(this);
//设置监听名称
jmi1.setActionCommand("open");
jmi2.setActionCommand("save");
//设置助记符
jmi1.setMnemonic('F');
jmi2.setMnemonic('S');
//添加JMenuBar,并且逐级添加菜单
this.setJMenuBar(jmb);
jmb.add(jm1);
jmb.add(jm2);
jm1.add(jmi1);
jm1.add(jmi2);
//添加
this.add(jta);
this.setSize(800,600);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("open")){
JFileChooser jfc1 = new JFileChooser();
//设置名字
jfc1.setDialogTitle("请选择文件...");
//使用默认方式
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);
//得到用户选择文件的全路径
String filename1 = jfc1.getSelectedFile().getAbsolutePath();
//System.out.println(filename);
BufferedReader br = null;
FileReader fr = null;
char[] buf = new char[1024];
try{
fr = new FileReader(filename1);
br = new BufferedReader(fr);
String s = "";
String allCon = "";
//从文件中读取信息,并显示在JTextArea控件中
while((s=br.readLine())!=null){
allCon = allCon + s + "\r\n";
}
jta.setText(allCon);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
//文件流一定要关闭
br.close();
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else if(arg0.getActionCommand().equals("save")){
//出现保存对话框
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("另存为...");
//按照默认方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true);
//得到文件全路径
String filename2 = jfc.getSelectedFile().getAbsolutePath();
//准备到写入指定文件即可
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw =new FileWriter(filename2);
bw = new BufferedWriter(fw);
bw.write(this.jta.getText());
}catch(Exception e){
e.printStackTrace();
}finally{
try {
bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}自己写的,测试运行成功,希望对你有帮助。如果遇到什么问题,希望评论,一起解决。
394



被折叠的 条评论
为什么被折叠?



