⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myframe.java

📁 一个JAVA字符串处理程序
💻 JAVA
字号:


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MyFrame extends Frame {
	TextArea textArea;

	public static int pos = 0; // 声明确定查找位置的变量

	public MyFrame() {
    // 创建菜单与菜单项的实例对象
		MenuBar menuBar = new MenuBar();
		Menu menuFile = new Menu();
		MenuItem menuFileOpen = new MenuItem();
		MenuItem menuFileSave = new MenuItem();
		MenuItem menuFileExit = new MenuItem();
     //命名菜单项
		menuFile.setLabel("文件");
		menuFileOpen.setLabel("打开");
		menuFileSave.setLabel("保存");
		menuFileExit.setLabel("退出");
     //在menuFile中添加菜单项
		menuFile.add(menuFileOpen);
		menuFile.add(menuFileSave);
		menuFile.addSeparator();
		menuFile.add(menuFileExit);
		menuBar.add(menuFile);
    //设置窗口名称和大小添加菜单
		setTitle("文件分析工具");
		setMenuBar(menuBar);
		setSize(new Dimension(500, 400));
     //在Frame中添加组件
		Panel p1 = new Panel();
		p1.setBackground(Color.gray);
		Button b1 = new Button("查找字符串");
		p1.add(b1);
		final TextField field1 = new TextField(10);
		p1.add(field1);
		Button b2 = new Button("下一个");
		p1.add(b2);
		final TextField field2 = new TextField(10);
		p1.add(field2);
		Button b3 = new Button("替换字符串");
		p1.add(b3);
		add("South", p1);

		Panel p2 = new Panel();
		p2.setLayout(new BorderLayout());
		this.textArea = new TextArea("");
		p2.add(textArea);
		add("Center", p2);

		// 事件监听,实现打开,保存,退出
		menuFileOpen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MyFrame frame = new MyFrame();
				FileDialog d1 = new FileDialog(frame, "打开", FileDialog.LOAD);
				d1.setVisible(true);
				MyFrame.this.textArea.setText("");

				try {
					// 获得要操作文件
					File myfile1 = new File(d1.getDirectory(), d1.getFile());

					// 用随机存取文件类来读取文件
					RandomAccessFile raf1 = new RandomAccessFile(myfile1, "rw");
					while (raf1.getFilePointer() < raf1.length()) {
						
						
						//在文本编辑区域显示该文件内容
						MyFrame.this.textArea.append(raf1.readLine() + "\n");
					}
				} catch (IOException ioe) {
					System.err.println(ioe.toString());

				}
			}
		});

		menuFileSave.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MyFrame frame = new MyFrame();
				FileDialog d2 = new FileDialog(frame, "保存", FileDialog.SAVE);
				d2.setVisible(true);

				try {
					MyFrame.this.textArea.getText();
					File myfile1 = new File(d2.getDirectory(), d2.getFile());

					// 字符流读写文件
					FileWriter fw = new FileWriter(myfile1);

					// 缓存流读取文件
					BufferedWriter bfw = new BufferedWriter(fw);
					bfw.write(MyFrame.this.textArea.getText(), 0,
							MyFrame.this.textArea.getText().length());
					bfw.flush();
					fw.close();

				} catch (IOException ioe) {
					System.err.println(ioe.toString());
				}
			}
		});

		menuFileExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MyFrame.this.windowClosed();
			}
		});

		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				MyFrame.this.windowClosed();
			}
		});
       //实现查找,,
		b1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent event) {
				try {
					String inputContent = textArea.getText();
					String findContent = field1.getText();

					// p和m是正则表达式中的内容java.util.regex

					Pattern p = Pattern.compile(findContent,
							Pattern.CASE_INSENSITIVE);
					Matcher m = p.matcher(inputContent);

					m.find(); //
					pos = m.start(); // 记录查找位置

					if (pos >= 0) {
						textArea.requestFocus(); // inputContent需要焦点才能设置选中
						textArea.setSelectionStart(pos);
						textArea.setSelectionEnd(pos + findContent.length());

					}

				} catch (IllegalStateException e) {
					e.printStackTrace();
				}
			}
		});
        //查找下一个
		b2.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent event) {
				try {
					String inputContent = textArea.getText();

					String findContent = field1.getText();
					Pattern p = Pattern.compile(findContent,
							Pattern.CASE_INSENSITIVE);
					Matcher m = p.matcher(inputContent);

					m.find(pos + findContent.length());// 开始查找
					pos = m.start(); // 记录查找位置
					if (pos >= 0) {
						textArea.requestFocus(); // inputContent需要焦点才能设置选中
						textArea.setSelectionStart(pos);
						textArea.setSelectionEnd(pos + findContent.length());

					}

				} catch (IllegalStateException e) {
					e.printStackTrace();
				}
			}
		});
        //替换功能
		b3.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent enent) {

				try {
					String inputContent = textArea.getText();

					String findContent = field1.getText();
					String replaceContent = field2.getText();

					Pattern p = Pattern.compile(findContent,
							Pattern.CASE_INSENSITIVE);
					Matcher m = p.matcher(inputContent);
					StringBuffer string = new StringBuffer();

					// 查找到的内容替换掉,并放到StringBuffer中
					while (m.find()) {
						m.appendReplacement(string, replaceContent);
					}
					m.appendTail(string);
					textArea.setText(string.toString());

				} catch (IllegalStateException e) {
					e.printStackTrace();
				}

			}

		});
	}

	protected void windowClosed() {
		System.exit(0);
	}

	public static void main(String[] args) {
		MyFrame frame = new MyFrame();
		frame.setVisible(true);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -