package com.niit.gui;
import java.awt.FileDialog;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class NotePadDemo3 {
/**
*
* 记事本3.0
* @param args
*/
public static void main(String[] args) {
new NotePadFrame3();
}
}
class NotePadFrame3 extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JMenuBar jMenuBar;
private JMenu file, edit, ogetshi, view, help;
private JMenuItem newFile, openFile, saveFile, saveAs, exit, paste, copy,
delete, cut, replace,font,state,helpTheme,about;
private JCheckBoxMenuItem autoWrap;
private int response;
private Image image;
private Icon icon;
private String fileName;
private FileDialog openDialog;
private FileDialog saveDialog;
private JScrollPane jscrollPane; // 添加滚动条
private JTextArea jtextArea; // 记事本2.0 把JTextArea文本域直接放到JFrame中
//经试验还是把JTextArea放到JFrame中操作比较爽
public NotePadFrame3() {
jtextArea = new JTextArea();
// 设置换行
jscrollPane = new JScrollPane(jtextArea);
this.add(jscrollPane);
openDialog = new FileDialog(this, "打开文件", FileDialog.LOAD);
saveDialog = new FileDialog(this, "保存文件", FileDialog.SAVE);
image = Toolkit.getDefaultToolkit().createImage(
"src\\smile_naughty.gif");
icon = new ImageIcon(image);
jMenuBar = new JMenuBar();
file = new JMenu("文件(F)"); //文件
newFile = new JMenuItem("新建(N)"); // 新建文件
//添加事件监听 以下类同
addListener(newFile);
openFile = new JMenuItem("打开...(O)"); // 打开文件
addListener(openFile);
saveFile = new JMenuItem("保存(S)"); // 保存文件
addListener(saveFile);
saveAs = new JMenuItem("另存为...(A)"); // 另存为
addListener(saveAs);
exit = new JMenuItem("退出(X)"); // 退出
addListener(exit);
edit = new JMenu("编辑(E)"); // 编辑
copy = new JMenuItem("复制(C)"); // 复制
addListener(copy);
cut = new JMenuItem("剪切(T)"); // 剪切
addListener(cut);
paste = new JMenuItem("粘贴(P)"); // 粘贴
addListener(paste);
delete = new JMenuItem("删除(L)"); // 删除
addListener(delete);
replace = new JMenuItem("替换(R)"); // 替换
addListener(replace);
ogetshi = new JMenu("格式(O)"); // 格式
autoWrap=new JCheckBoxMenuItem("自动换行(W)");//自动换行
addListener(autoWrap);
font=new JMenuItem("字体(F)"); //字体
addListener(font);
view = new JMenu("查看(V)"); // 查看
state=new JMenuItem("状态栏(S)");
addListener(state);
help = new JMenu("帮助(H)"); // 帮助
helpTheme=new JMenuItem("帮助主题(H)");
addListener(helpTheme);
about=new JMenuItem("关于记事本(A)");
addListener(about);
file.add(newFile);
file.add(openFile);
file.add(saveFile);
file.add(saveAs);
file.addSeparator();
file.add(exit);
edit.add(copy);
edit.add(cut);
edit.add(paste);
edit.add(delete);
edit.addSeparator();
edit.add(replace);
ogetshi.add(autoWrap);
ogetshi.add(font);
view.add(state);
help.add(helpTheme);
help.addSeparator();
help.add(about);
jMenuBar.add(file);
jMenuBar.add(edit);
jMenuBar.add(ogetshi);
jMenuBar.add(view);
jMenuBar.add(help);
this.setJMenuBar(jMenuBar);
//this.add(jMenuBar, new BorderLayout().NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100, 100, 600, 600);
this.setVisible(true);
}
// 添加事件监听方法
public void addListener(JMenuItem jmi)
{
jmi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// 新建文件
if (e.getSource() == newFile)
{
fileName = null;
jtextArea.setText("");
}
// 打开文件
if (e.getSource() == openFile)
{
openDialog.setVisible(true);// openDialog.setFile("*.txt");
if (openDialog.getDirectory() != null)
{
fileName = openDialog.getDirectory()+ openDialog.getFile();
// 调用方法从文件读出数据
readFromFile(fileName);
}
}
// 保存文件
if (e.getSource() == saveFile)
{
// saveDialog.setFile("*.txt");
if (fileName == null)
{
saveDialog.setVisible(true);
// 得到文件名fileName
fileName = saveDialog.getDirectory()+ saveDialog.getFile();
// 调用方法把数据写入文件
writeToFile(fileName);
} else if (fileName != null)
{
writeToFile(fileName);
}
}
// 另存为
if (e.getSource() == saveAs)
{
fileName = null;
saveDialog.setVisible(true);
fileName = saveDialog.getDirectory() + saveDialog.getFile();
if (fileName != null)
{
writeToFile(fileName);
}
}
// 退出记事本
if (e.getSource() == exit)
{
response = JOptionPane.showConfirmDialog(
NotePadFrame3.this, "文件内容已经改变是否保存", "退出对话框",
JOptionPane.YES_NO_CANCEL_OPTION);
//点击确定需要保存
if (response == 0) {
saveDialog.setFile("*.txt");
saveDialog.setVisible(true);
fileName = saveDialog.getDirectory()+ saveDialog.getFile();
writeToFile(fileName);
} else if (response == 1) //点击否 不需要保存
{
System.exit(response);
}
}
// 复制
if(e.getSource()==copy)
{
jtextArea.copy();
}
// 剪切
if(e.getSource()==cut)
{
jtextArea.cut();
}
// 粘贴
if(e.getSource()==paste)
{
jtextArea.paste();
}
// 删除
if(e.getSource()==delete)
{
jtextArea.cut();
}
// 替换
if(e.getSource()==replace)
{
String newContent=JOptionPane.showInputDialog("要把选中内容替换为:");
jtextArea.replaceSelection(newContent);
}
//格式
if(e.getSource()==autoWrap)
{
if(autoWrap.getState())
{
jtextArea.setLineWrap(true);
jtextArea.setWrapStyleWord(true);
}else
{
jtextArea.setLineWrap(false);
jtextArea.setWrapStyleWord(false);
}
}
if(e.getSource()==font)
{
JOptionPane.showMessageDialog(NotePadFrame3.this, "No Font");
}
if(e.getSource()==state)
{
JOptionPane.showMessageDialog(NotePadFrame3.this, "No State");
}
if(e.getSource()==helpTheme)
{
JOptionPane.showMessageDialog(NotePadFrame3.this, "SOS~~~~");
}
if(e.getSource()==about)
{
JOptionPane.showMessageDialog(NotePadFrame3.this, "NotePad 3.0");
}
}
});
}
// 把记事本内容写入文件
public void writeToFile(String toFileName)
{
try
{
FileOutputStream fos = new FileOutputStream(fileName);
byte[] content = jtextArea.getText().getBytes();
fos.write(content);
fos.close();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
}
// 把文件读入记事本
public void readFromFile(String fromFileName)
{
try
{
FileInputStream fis = new FileInputStream(fromFileName);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
while (br.ready())
{
jtextArea.append(br.readLine());
jtextArea.append("\n");
}
} catch (FileNotFoundException e) {
e
java小程序记事本源代码
需积分: 9 115 浏览量
2011-03-17
20:06:15
上传
评论
收藏 2KB RAR 举报
lsl870605
- 粉丝: 0
- 资源: 13
最新资源
- 基于MQTT的智能宠物投喂系统
- 312749069629470selfieU重绘.apk
- http%3A%2F%2Fimg.wsdl.vivo.com.cn%2Fappstore%2Fdeveloper%2Ficon%2F201412%2F201412231038336
- 主要记录B站up主莫烦matplotlib教程中的代码.zip
- Java SE Development Kit 8u411 Windows x64 Installer
- 用于科学绘图的 Matplotlib 样式.zip
- Java SE Development Kit 11.0.23 Windows x64 Installer
- 毕业设计-后端项目-网站民宿展示网站SSM
- 基于python绘图,程序详细展示了绘图过程中详尽的命令语句,使得图片达到可发表程度 .zip
- Java SE Development Kit 11.0.23 macOS x64 DMG Installer
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈