用java编写note

今天,在myeclipse平台上,编写了一个“文本文档”的编译器。本人也属于菜鸟级别,有如下心得。

创建一个名叫note的java工程,创建一个一个NOteUIt类,该类有JFrame派生。

创建全局变量:

private JMenuBar menuBar; //菜单栏

private JMenu fileMenu; //文件
private JMenu editMenu; //编辑

private JMenuItem open; //打开
private JMenuItem save; //保存
private JMenuItem saveAs; //另存为
private JMenuItem close; //关闭

private JMenuItem cut; //剪切
private JMenuItem copy; //复制
private JMenuItem paste; //粘粘

private JTextArea textArea; //轻量级组建,纯文本多行区域
private JLabel stateBar; //状态标签
private JFileChooser fileChooser; //为用户选择文件提供一种简单机制

private JPopupMenu popupMenu; //菜单弹出

编写编译器的框架结构:

public void initUI(){
setSize(800, 600);//设置窗口大小
setLocation(100, 50); //设置窗口在屏幕出现的位置

//文件菜单
fileMenu = new JMenu("文件");
open = new JMenuItem("打开");
//快捷键

save = new JMenuItem("保存");
//快捷键

saveAs = new JMenuItem("另存为");
close = new JMenuItem("退出");
//快捷键


fileMenu.add(open);
fileMenu.add(save);
fileMenu.add(saveAs);
fileMenu.add(close);

//编辑菜单
editMenu= new JMenu("编辑");
cut = new JMenuItem("剪切");
//快捷键

copy = new JMenuItem("复制");
//快捷键

paste = new JMenuItem("粘粘");
//快捷键


editMenu.add(cut);
editMenu.add(copy);
editMenu.add(paste);

//设置菜单栏
menuBar = new JMenuBar();
menuBar.add(fileMenu);
menuBar.add(editMenu);

setJMenuBar(menuBar);

//工作区域
textArea= new JTextArea();
textArea.setFont(new Font("宋体", Font.PLAIN , 16));//设置字体
textArea.setBackground(new Color(0, 255, 0)); //设置背景颜色
textArea.setLineWrap(true);

JScrollPane pane= new JScrollPane(textArea, 
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, 
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
Container contentPane=getContentPane();
contentPane.add(pane, BorderLayout.CENTER);

//状态栏
stateBar = new JLabel("未被修改");
stateBar.setHorizontalAlignment(SwingConstants.CENTER);
stateBar.setBorder(BorderFactory.createEtchedBorder());
contentPane.add(stateBar, BorderLayout.SOUTH);

popupMenu=editMenu.getPopupMenu();
fileChooser= new JFileChooser();
}

为按钮编写监听函数,做得比较粗糙,见谅:

private void setUpEventListener(){
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
try {
closeFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});

open.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
openFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});

save.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
saveFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});

saveAs.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
saveFileAs();
}
});

close.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
closeFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});

cut.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
cut();
}
});

copy.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
copy();
}
});

paste.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
paste();
}
});

}

实现监听函数的动作

private void openFile() throws IOException{
//判断文件是否保存
if(isCurrentFileSaved()){
open();
}else{
//显示对话框
int option = JOptionPane.showConfirmDialog(null,
"文件已修改,是否保存?","保存文件!",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,null);

switch(option){
case JOptionPane.YES_OPTION:
saveFile();
break;
case JOptionPane.NO_OPTION:
open();
break;
}
}
}

private boolean isCurrentFileSaved(){
if(stateBar.getText().equals("未被修改"))
return false;
else
return true;
}

private void open(){
//显示文件的对话框
int option= fileChooser.showDialog(null, null);

//使用者按下用键
if(option==JFileChooser.APPROVE_OPTION){
try{
//选取文件
BufferedReader buf = new BufferedReader(new FileReader(
fileChooser.getSelectedFile()));
//设定文件标题
setTitle(fileChooser.getSelectedFile().toString());
//清楚前一次
setTitle("");
//设定状态栏
stateBar.setText("未被修改");
//取得系统后果相应的换行字符
String lineSeparator = System.getProperty("line.separator");
//读取文件并附加到工作区
String text;
while((text=buf.readLine())!=null){
textArea.append(text);
textArea.append(lineSeparator);
}
buf.close();
}catch(IOException e){
JOptionPane.showMessageDialog(null, e.toString(),
"开启文件失败",JOptionPane.ERROR_MESSAGE);

}
}
}

private void saveFile() throws IOException{
//从标题栏中取得文件名称
File file = new File(getTitle());

if(file.exists()){ //若指定文件不存在,则执行另存为
saveFileAs();
}else{
BufferedWriter buf = new BufferedWriter(new FileWriter(file));
//将工作 区的文字保存在文件
buf.write(textArea.getText());
buf.close();
stateBar.setText("未被修改");
}
}

private void saveFileAs(){
//显示文件对话框
int option = JOptionPane.showConfirmDialog(null, null);
//如果确认选取文件
if(option==JFileChooser.APPROVE_OPTION){
File file = fileChooser.getSelectedFile();
//在标题栏上设置文件名称
setTitle(file.toString());

try{
file.createNewFile();
saveFile();
}catch(IOException e){
JOptionPane.showConfirmDialog(null, e.toString(),
"无法建立文件",JOptionPane.ERROR_MESSAGE);
}
}
}

private void closeFile() throws IOException{
//是否保存文件
if(isCurrentFileSaved())
dispose(); //释放资源,关闭后台
else{
int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存",
"保存文件",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);
switch(option){
case JOptionPane.YES_OPTION:
saveFile();
break;
case JOptionPane.NO_OPTION:
dispose();
break;
}

}
}

private void cut(){
textArea.cut();
stateBar.setText("已修改");
popupMenu.setVisible(false);

}

private void copy(){
textArea.copy();
popupMenu.setVisible(false);
}

private void paste(){
textArea.paste();
stateBar.setText("已修改");
popupMenu.setVisible(false);
}

初始化结构函数

public NoteUI(){
super("新建文本文件"); //继承父类构造函数,窗口名字为新建文本
initUI();
setUpEventListener();
setVisible(true);
}

在main函数中,创建一个实例

new NoteUI();

用myeclipse给软件打包,步骤如下:

单击[file],选择下拉菜单中的[export];

在select中,选择到处类型,我的选择是java类型下的Runnabel jar file;

next,选择打包文件和输出位置,然后就一切ok了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值