提供了 OutputStream 的输出显示控件(整理修改版)
来源:互联网 发布:python 使用 编辑:程序博客网 时间:2024/05/18 21:42
之前发的小控件有点问题,不换行就不会提交更改,修改代码如下:
import java.awt.Color;import java.awt.Graphics;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;import javax.swing.JTextArea;import javax.swing.SwingUtilities;import javax.swing.Timer;public class JOutputPane extends JTextArea { private OutputStream out = this.new PaneOutputStream(); private Color candy = new Color(240, 240, 255); @Override public boolean isOpaque() { return false; } public OutputStream getOutputStream() { return out; } @Override protected void paintComponent(Graphics g) { int width = getWidth(); int height = getHeight(); Color old = g.getColor(); g.setColor(getBackground()); g.fillRect(0, 0, width, height); Rectangle r = new Rectangle(); r.x = 0; r.y = 0; r.width = width; r.height = getRowHeight(); g.setColor(candy); for (int heightIncrement = 2 * getRowHeight(); r.y < height; r.y += heightIncrement) { g.fillRect(r.x, r.y, r.width, r.height); } g.setColor(old); super.paintComponent(g); } private class PaneOutputStream extends OutputStream { private final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); private final Timer timer; private PaneOutputStream() { timer = new Timer(50, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { commit(); } }); } @Override public void write(int b) throws IOException { buffer.write(b); timer.restart(); } private void commit() { assert SwingUtilities.isEventDispatchThread(); timer.stop(); if( buffer.size() > 0 ) { append(buffer.toString()); buffer.reset(); } } }}
设计上模仿了 JViewPort 对频繁的 scroll 动作的响应方式,用了一个内部的 timer 来控制更新。
需要特别说明的是,对返回的 OutputStream 的任何输出都应该在 EDT 内进行。
- 提供了 OutputStream 的输出显示控件(整理修改版)
- response的OutputStream输出数据
- response的outputStream输出数据的问题
- Java的字节输出流OutputStream小结
- 整理了一个带语法高亮显示,及到处html功能的richtextbox控件
- 给当前选中的控件提供高亮显示功能
- JAVA 的IO操作(二) 字节输出流和输入流:OutputStream和InputStream
- response的outputstream(十)
- GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行、列数据的途径。
- 字节输出流 OutputStream
- response的outputStream输出中文的乱码问题
- Java的InputStream和OutPutStream流输入与输出体会
- Java的io流学习记录(2)--字节流OutputStream及其字节输出流的子类
- ASP.Net 提供了三个数据控件
- 整理apache提供的StringUtils
- ASP与数据库连接、写入、修改、删除、显示的代码整理
- 修改VGA输出电脑屏超出显示范围的问题
- 将MsFlexGrid控件中显示的内容输出到文本文件
- Windows下Qt的MYSQL数据库开发步骤
- CSS控制图片、表格、背景颜色渐变
- UVA--10859--Placing Lampposts--DP
- android dp(设备独立像素) sp(可缩放像素) pt(磅) in(英尺) mm(毫米) 转换为 px(像素)
- swf放大缩小自适应显示
- 提供了 OutputStream 的输出显示控件(整理修改版)
- 第一天
- 【学习笔记三】最基本的JAVA基础[数据类型,运算符]
- MacBook上最简单的三系统安装教程
- [Javascript入门]Javascript之初体验1
- hadoop 0.20.2集群配置入门
- 各种平板电脑(IPAD2,chromebook)功耗大比拼
- 使用gdb调试当前运行的程序
- SGU 107