📄 iopane.java
字号:
package edu.odu.cs.zeil.AlgAE.Client.IOViewer;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Label;import java.awt.TextArea;import java.util.Vector;import edu.odu.cs.zeil.AlgAE.Application;import edu.odu.cs.zeil.AlgAE.Debug;import edu.odu.cs.zeil.AlgAE.Direction;import edu.odu.cs.zeil.AlgAE.Message;import edu.odu.cs.zeil.AlgAE.Messages;import edu.odu.cs.zeil.AlgAE.Client.MessageDispatcher;import edu.odu.cs.zeil.AlgAE.MessageListener;import edu.odu.cs.zeil.AlgAE.ParameterizedMessage;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class IOPane extends TextArea{ private int fontSize; private boolean awaitingInput; private MessageDispatcher dispatcher; private int inputStart; private Application appl; public IOPane(Application application, MessageDispatcher dispatch) { super(); awaitingInput = false; dispatcher = dispatch; appl = application; appl.msgs.stdout.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { String text = (String)params.elementAt(0); append (text); } }); appl.msgs.stdin.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { awaitingInput = true; inputStart = getCaretPosition(); requestFocus(); } }); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (awaitingInput && (e.getKeyCode() == KeyEvent.VK_ENTER)) { awaitingInput = false; String fullText = getText(); int endPos = fullText.length(); while ((endPos > 0) && (fullText.charAt(endPos-1) < ' ')) --endPos; int pos = endPos-1; while ((pos > 0) // && (pos > inputStart) && (fullText.charAt(pos-1) >= ' ')) --pos; String response = fullText.substring(pos, endPos) + "\n"; Vector params = new Vector(); params.addElement (response); dispatcher.send (new ParameterizedMessage (appl.msgs.response, params)); } }}); } public void writeText (String str) { append (str); repaint(); } public void setFontSize (int size) { Font textFont = new Font("Courier", Font.PLAIN, size); setFont (textFont); repaint(); } public synchronized Dimension getMinimumSize() { return new Dimension (50,50); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -