java - 使用 Java Swing 的管道连接器

标签 java swing pipe

<分区>

如何使用 Java Swing 实现管道连接器,例如 Yahoo 管道。 或者就此而言,Java Swing 中的任何其他类型的连接。

最佳答案

下面是在 java 中使用 PipedReaderPipedWriter 的例子:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedReader;
import java.io.PipedWriter;
/**
 * @date 1st May, 2011
 * @author sanju.org
 *
 * To demonstrate the use of piped character streams.
 * Example program for piped character stream in java.
 *
 */

public class PipedReaderExample {

    public static void main(String args[]) throws IOException{
        PipedReader reader = new PipedReader();
        PipedWriter writer = new PipedWriter(reader);
        Thread readerThread = new Thread(new ReaderThread(writer));
        Thread writerThread = new Thread(new WriterThread(reader));
        readerThread.start();
        writerThread.start();
    }

}

class ReaderThread implements Runnable{
    PipedWriter writer;
    public ReaderThread(PipedWriter writer){
        this.writer = writer;
    }

    public void run() {
        InputStreamReader streamReader = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(streamReader);
        try {
            while (true) {
                //sample implementation reading from console
                //real implementation can be reading from a socket or a file
                //or from server side code
                String line = bufferedReader.readLine();
                writer.write(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class WriterThread implements Runnable{
    PipedReader reader;
    public WriterThread(PipedReader reader){
        this.reader = reader;
    }

    public void run() {
        while(true){
            try {
                char c;
                while( (c = (char)reader.read()) != -1){
                    //write your business logic here
                    //could be writing into a file
                    //could be processing the date
                    System.out.println(c);
                }

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

关于将 yahoo 与 PipedReader/Writer 类一起使用,我想您会阅读他们的 API 以连接到 url 等

这是与 PipedReaderPipedWriter(教程和信息的组合)相关的其他链接列表,可能会有帮助:

至于 Swing 方面,要显示从管道接收到的数据,您需要使用 TextComponent,例如以下之一:

每个都有一个 setText(...) 可以让你设置它们的内容

引用:

关于java - 使用 Java Swing 的管道连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038812/

相关文章:

java - 嵌入式Pig无法访问hadoop

Windows cmd 将一个命令的输出作为参数传递给另一个命令

java - 管道文件消失但仍然有效

c++ - gnuplot-cpp 无法将命令提供给管道

java - 如何使 JAXB 注释并提供 equals/hashcode 实现

java - 可以使用 CSS 将标记扩展到 JavaFX 中的复选框之外吗?

java - AsyncTask 在一个简单的类中还是在 Activity 中?

java - 调试 GridBagLayout - 组件聚集到中心

java - 在圆圈内绘制文本的交叉区域

Java:在 Windows 和 Linux 上处理注销或关机