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

📄 consoletextarea.java

📁 编译原理的课程设计
💻 JAVA
字号:
package source;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import javax.swing.text.Document;

public class ConsoleTextArea extends JTextArea
{
	public static boolean callInput = false;
	public static ConsoleTextArea csta = null;
	public static JTextArea	jta = null;
	public StringBuffer strbuf = new StringBuffer("");
	//构造方法
	public ConsoleTextArea(int cols, int vols)
	{
		super(cols, vols);
	}
	//设置输入输出流
	public void setStreams(final InputStream[] inStreams,
		 final OutputStream[] outStreams, final JTextArea jta)
	{
		csta = this;
		this.jta = jta;
		int lengthOut = outStreams.length;
		int lengthIn = inStreams.length;
		for(int i = 0; i < lengthIn; ++i)
		{
			startConsoleReaderThread(inStreams[i]);
		}
		for(int i = 0; i < lengthOut; i++)
		{
			startConsoleWriterThread(outStreams[i]);
		}
	}
	//启动控制台读取线程
	private void startConsoleReaderThread(InputStream inStream)
	{
		//控制台输出窗口响应
		final BufferedReader br = new BufferedReader(new InputStreamReader(inStream));
		new Thread(new Runnable()
		{
			public void run()
			{
				StringBuffer sb = new StringBuffer();
				try 
				{
					String s;
					Document doc = getDocument();
					while((s = br.readLine()) != null)
					{
						boolean caretAtEnd = false;
						caretAtEnd = getCaretPosition() == doc.getLength() ?
							true : false;
						sb.setLength(0);
						append(sb.append(s).append('\n').toString());
						if(caretAtEnd)
							setCaretPosition(doc.getLength());
					}
					callInput = true;
					br.close();
				}
				catch(IOException e)
				{
					JOptionPane.showMessageDialog(null,
						"从BufferedReader读取错误:" + e);
				}
			}
		}).start();
	}
	//启动控制台写入线程
	private void startConsoleWriterThread(OutputStream outStream)
	{
		final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outStream));
		new Thread(new Runnable()
		{
			public void run()
			{
				try
				{
					strbuf.append(jta.getText());
					strbuf.append("?????????\n#?e_N_d?#\n");
					bw.write(strbuf.toString(), 0,
				         strbuf.length());
					bw.flush();
					strbuf.setLength(0);
					bw.close();
				}
				catch(Exception e)
				{
					JOptionPane.showMessageDialog(null,
						"从BufferedReader读取错误:" + e);
				}
			}
		}).start();
	}
}

⌨️ 快捷键说明

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