//导入JAVA类包 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*;
class EditFile { //默认构造函数 EditFile(){} //保存文件函数 void SaveFile(String name,String str) { try { //声明文件输出对象 FileOutputStream fos = new FileOutputStream(name); //输出保存文件 fos.write(str.getBytes()); } catch (IOException e) { //发生错误打印错误信息 System.out.println(e.toString()); } } //打开文件函数 String OpenFile(String name) { //定义字符串str来保存文件内容 String str=null; //定义计数器 int ch=0; try { //声明文件输入对象 FileInputStream fis = new FileInputStream(name); //遍历输入对象,将内存存储到str中 while ((ch=fis.read())!=-1) { str=str+(char)ch; } //关闭文件对象 fis.close(); } catch (IOException e) { //发生错误打印错误信息 System.out.println(e.toString()); } //返回str return str; } }
class MyMainFrame extends JFrame implements ActionListener { //文件名 String filename=null; //查找字符串 String findtxt=null; //替换字符串 String replacetxt=null; //查找开始位 int findtxton=-1; //查找结束位 int findtxtoff=-1; //中间面版 Container c=getContentPane(); //菜单 JMenuBar mainMb=new JMenuBar(); //菜单按钮 JMenu fileMenu=new JMenu("文件"); JMenu editMenu=new JMenu("编辑"); JMenu typeMenu=new JMenu("格式"); JMenuItem newItem=new JMenuItem("新建"); JMenuItem openItem=new JMenuItem("打开"); JMenuItem saveItem=new JMenuItem("保存"); JMenuItem saveasItem=new JMenuItem("另存为"); JMenuItem exitItem=new JMenuItem("退出"); JMenuItem findItem=new JMenuItem("查找"); JMenuItem findnextItem=new JMenuItem("查找下一个"); JMenuItem changeItem=new JMenuItem("替换"); JCheckBoxMenuItem changelineItem=new JCheckBoxMenuItem("自动换行",false); //文本域 JTextArea txt=new JTextArea(); JTextArea txt2=new JTextArea(); //滚动条 JScrollPane jsp; //文件操作对象 EditFile ef=new EditFile(); //构造函数 MyMainFrame() { //绘制界面 c.setLayout(new BorderLayout()); jsp= new JScrollPane(txt); jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED); c.add(jsp,BorderLayout.CENTER); mainMb.add(fileMenu); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(saveasItem); fileMenu.addSeparator(); fileMenu.add(exitItem); mainMb.add(editMenu); editMenu.add(findItem); editMenu.add(findnextItem); editMenu.add(changeItem); mainMb.add(typeMenu); typeMenu.add(changelineItem); setJMenuBar(mainMb); //为菜单添加事件监听 newItem.addActionListener(this); openItem.addActionListener(this); saveItem.addActionListener(this); saveasItem.addActionListener(this); exitItem.addActionListener(this); findItem.addActionListener(this); findnextItem.addActionListener(this); changeItem.addActionListener(this); changelineItem.addActionListener(this); } //事件处理函数 public void actionPerformed(ActionEvent e) { //建立一个文件操作对象 EditFile ef=new EditFile(); //如果点击按钮为新建 if(e.getActionCommand()=="新建") { //将文本域置为空 txt.setText(null); //文件名为空 filename=null; } //如果点击按钮为打开 if(e.getActionCommand()=="打开") { //定义一个文件窗体 FileDialog openDialog=new FileDialog(this,"打开文件...",FileDialog.LOAD); //显示窗体 openDialog.show(); //如果返回文件不为空 if(openDialog.getFile()!=null) { //获得文件名 filename=openDialog.getFile(); //获得文件内容 txt.setText(ef.OpenFile(openDialog.getFile())); } } //如果点击按钮为保存 if(e.getActionCommand()=="保存") { //如果没有文件名 if(filename==null) { //定义一个文件窗体 FileDialog saveDialog=new FileDialog(this,"另存为...",FileDialog.SAVE); //显示窗体 saveDialog.show(); //如果返回文件不为空 if(saveDialog.getFile()!=null) { //获得文件名 filename=saveDialog.getFile(); //保存文件 ef.SaveFile(filename,txt.getText()); } } else { //直接保存文件 ef.SaveFile(filename,txt.getText()); } } //如果点击按钮为另存为 if(e.getActionCommand()=="另存为") { //定义一个文件窗体 FileDialog saveDialog=new FileDialog(this,"另存为...",FileDialog.SAVE); //显示窗体 saveDialog.show(); //如果返回文件不为空 if(saveDialog.getFile()!=null) { //获得文件名 filename=saveDialog.getFile(); //保存文件 ef.SaveFile(filename,txt.getText()); } } //如果点击按钮为推出 if(e.getActionCommand()=="退出") { //退出 System.exit(0); } //如果点击按钮为查找 if(e.getActionCommand()=="查找") { //定义一个对话框 JOptionPane inputdia=new JOptionPane(); //定义对话框获得查找文本 findtxt=inputdia.showInputDialog("请输入要查找的文本",null); //定义其实坐标 findtxton=-1; findtxtoff=-1; //调用查找函数 find(); } //如果点击按钮为查找下一个 if(e.getActionCommand()=="查找下一个") { //调用查找函数 find(); } //如果点击按钮为替换 if(e.getActionCommand()=="替换") { //定义一个对话框 JOptionPane inputdia=new JOptionPane(); //获得查找和替换文本 findtxt=inputdia.showInputDialog("请输入要被替换的文本",null); replacetxt=inputdia.showInputDialog("请输入替换后的文本",null); //备份内容 txt2.setText(replacetxt); txt2.selectAll(); txt2.copy(); //调用查找函数 find(); //如果没找到 if(findtxton==-1&&findtxtoff==-1) { } //如果找到 else { //替换 txt.paste(); } findtxton=-1; findtxtoff=-1; } //如果点击按钮为自动换行 if(e.getActionCommand()=="自动换行") { //判断当前状态 if(changelineItem.isSelected()==true) { //设置滚动条状态 jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER); //设置是否换行 txt.setLineWrap(true); } else { jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED); txt.setLineWrap(false); } } } //查找函数 public void find() { //定义临时字符串 String tempstr; //查找文本不为空的话 if(findtxt!=null) { try { //进行查找 tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1)); findtxton=findtxton+1+tempstr.indexOf(findtxt); } catch(Exception e) {
} //如果开始位有变化,即找到 if(findtxton!=-1) { //设置结束位 findtxtoff=findtxton+findtxt.length(); } else { //否则显示没有找到 findtxtoff=-1; JOptionPane.showMessageDialog(null,"没有找到"); } //将找到部分进行选择 txt.select(findtxton,findtxtoff); } } }
public class TextEdit { //主函数 public static void main(String args[]) { //声明设置主窗体 MyMainFrame f=new MyMainFrame(); f.setSize(640,480); f.setTitle("文本编辑器"); //显示主窗体 f.setVisible(true);
} }
/* JTextArea的自动换行方面的问题 --------------------------------------------------------------------------------
如果水平滚动条设置为JSctollpane. ,则添加了这种JSctollpane对象的JTextArea将具备换行功能 是这样吗?
--------------------------------------------------------------------------------
JTextArea.setLineWrap(boolean wrap)
--------------------------------------------------------------------------------
JTextArea.setLineWrap(boolean wrap)//一般的换行。 JTextArea.setWrapStyleWorld(boolean world)//以单词边缘为界限分行 */
(责任编辑:admin) |