记录
一次课设,屎一样的代码
功能: 新建 打开 保存 退出 全选 复制 粘贴 查找
源码
import java.io.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Notepad extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JButton jbtn=new JButton("查找");
JFrame newf=new JFrame("查找");
JMenuBar menuBar = new JMenuBar();
JMenu file = new JMenu("文件"), // 绘制文件按钮
edit = new JMenu("编辑"); //绘制编辑按钮
JMenuItem[] menuItem ={ //设置文件按钮下的按钮选项
new JMenuItem("新建"),//绘制新建按钮
new JMenuItem("打开"),//绘制打开按钮
new JMenuItem("保存"),//绘制保存按钮
new JMenuItem("退出"),//绘制退出按钮
new JMenuItem("全选"),//绘制全选按钮
new JMenuItem("复制"),//绘制复制按钮
new JMenuItem("剪切"),//绘制剪切按钮
new JMenuItem("粘贴"),//绘制粘贴按钮
new JMenuItem("查找"),//绘制查找按钮
new JMenuItem("查找"),//绘制查找按钮
};
JTextArea textArea = new JTextArea();
//Panel myPanel=new Panel();
JTextArea textArea1 = new JTextArea();
String fileName = "NoName"; //设置默认文件名
Toolkit toolKit = Toolkit.getDefaultToolkit(); //设置默认工具箱
Clipboard clipboard = toolKit.getSystemClipboard();//调用文件工具箱下的系统剪贴板方法
private JFileChooser openFileDialog = new JFileChooser();//设置私有的JFileChooser 下的打开文件对话方法
private JFileChooser saveFileDialog = new JFileChooser();//设置私有的JFileChooser 下的保存文件对话方法
public Notepad() {
setTitle("记事本"); //设置程序标题名
setFont(new Font("Times New Roman",Font.PLAIN,15)); //设置字体及字体大小
setBackground(Color.white);//设置程序背景色为白色
setSize(500,500);//设置程序运行的窗口大小
add(new JScrollPane(textArea));
setJMenuBar(menuBar); //设置菜单栏
menuBar.add(file);
menuBar.add(edit);
file.add(menuItem[0]); //file下添加4个选项
file.add(menuItem[1]);
file.add(menuItem[2]);
file.add(menuItem[3]);
edit.add(menuItem[4]);//edit下添加5个选项
edit.add(menuItem[5]);
edit.add(menuItem[6]);
edit.add(menuItem[7]);
edit.add(menuItem[8]);
//this.getContentPane().add(textArea);//添加文本输入区域
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出按钮
for(int i=0;i<menuItem.length;i++) // 循环执行,取决于列表长度
{
menuItem[i].addActionListener(this);//设置监听
}
}
public void openFile(String fileName){ //设置打开方法
byte buffer[]=new byte[2056];//建立存放数据的字节组
int bytes;
String str;
try{
/*File file = new File(fileName);//读取打开的文件名
FileReader readIn = new FileReader(file);
int size = (int)file.length();//得到打开文件的长度
int charsRead = 0;
char[] content = new char[size];
while(readIn.ready())
charsRead += readIn.read(content,charsRead,size-charsRead);
readIn.close();
textArea.setText(new String(content,0,charsRead));*/
File file = new File(fileName);//读取打开的文件名
FileInputStream fileInput=new FileInputStream(file);
bytes = fileInput.read(buffer);
str= new String(buffer,0,bytes);//将字节数组转化为字符串
textArea.setText(str);
}
catch(Exception e){//异常处理
System.out.println("错误打开文件!");//输出异常信息 错误打开文件
}
}
public void writeFile(String fileName){ //异常处理
try{
File file = new File(fileName);
FileWriter write = new FileWriter(file);
write.write(textArea.getText());
write.close();
}catch(Exception e){//关闭时的异常处理
System.out.println("Error closing file!");//输出异常处理信息
}
}
public void actionPerformed(ActionEvent e) {
Object eventSource = e.getSource();
if(eventSource == menuItem[0])//新建文件事件
{
textArea.setText(""); //设置文本框内值为空
}
else if(eventSource == menuItem[1])//打开文件
{
openFileDialog.showOpenDialog(this); //打开文件对话框
fileName = openFileDialog.getSelectedFile().getPath();//得到文件名
if(fileName != null) //如果打开的文件不为空
{
openFile(fileName); //打开文件
}
}
else if(eventSource ==menuItem[2]) //保存文件事件
{
saveFileDialog.showSaveDialog(this); //打开保存文件对话框
fileName = saveFileDialog.getSelectedFile().getPath();//得到文件名(本地路径)
if(fileName !=null) //如果文件名不为空
{
writeFile(fileName); //写入文件
}
}
else if(eventSource==menuItem[3])//设置退出事件
{
System.exit(0);//程序结束 退出
}
else if(eventSource == menuItem[4]) //设置全选事件
{
textArea.selectAll(); //文本区域全选
}
else if(eventSource == menuItem[5]) //设置复制事件
{
String text = textArea.getSelectedText(); //将得到的选择文本内容存入text中
StringSelection selection= new StringSelection(text);
clipboard.setContents(selection,null);//将得到的内容放入到剪切板中
}
else if(eventSource == menuItem[6]) //设置剪切事件
{
String text = textArea.getSelectedText(); //将得到的选择文本内容存入text中
StringSelection selection = new StringSelection(text);
clipboard.setContents(selection,null);//将得到的内容放入到剪切板中
textArea.replaceRange("",textArea.getSelectionStart(),//将原有的内容进行替换 替换为空
textArea.getSelectionEnd()); //得到文本区域的值
}
else if(eventSource == menuItem[7])//设置删除事件
{
Transferable contents = clipboard.getContents(this);//设置剪切板中的内容存入可传输内容中
if(contents==null) //如果内容为空
return; //结束
String text;
text=""; //设置文本区域为空
try{
text = (String)contents.getTransferData(DataFlavor.stringFlavor);
// 检查内容是否是文本类型
}
catch(UnsupportedFlavorException ex){ }
catch(IOException ex){ }
textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());
}
else if(eventSource == menuItem[8])//设置查找事件
{
newf.setSize(300,200);
newf.setVisible(true);
setLayout(new BorderLayout());
newf.add(textArea1);
menuItem[9].setBounds(120,90,40,30);
textArea1.add(menuItem[9]);
validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
else if(eventSource == menuItem[9])//设置查找事件
{
int n;
int n1;
String s=textArea.getText();
String m=textArea1.getText();
n=s.indexOf(m);
n1=m.length();
if(n>=0) {
newf.dispose();
textArea.setCaretPosition(n+n1);
}
else if(n<0) {
JOptionPane.showMessageDialog(null, "无");
}
}
}
public static void main(String[] args) {
Notepad notepad = new Notepad();
notepad.setVisible(true);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105000.html