1

我正在尝试使用 java.io.OutputStream 的 write(int) 方法,但我无法弄清楚如何将 int 正确转换回 String。

public PrintWriter out = new PrintWriter(new OutputStream() {

    @Override
    public void write(int b) throws IOException {
        outputField.setText(/* I need a byte[] or char[] or string from this int */);
    }

});

我真的需要这方面的帮助。我尝试使用一种方法从 int 制作 byte[] ,但它使文本与很多空格混淆。

4

2 回答 2

0

将 OutputStream 指向某种 GUI 中似乎是文本字段的内容似乎很奇怪。你确定那是你真正想要的吗?如果您想捕获正在写入 Writer 的内容,则StringWriter通常是合适的。您只需让写入发生,然后对其调用toString()以获得最终结果。如果您真的寻找一种在将内容写入 Writer/OutputStream 时将内容写入文本字段的方法,请查看以下内容:

public static void main(String[] args) throws Exception {
    JFrame frame = new JFrame("I be streamin!");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTextField field = new JTextField();
    frame.add(field);
    frame.pack();
    frame.setVisible(true);

    System.out.println("Enter stuff to write to the field");
    char c;
    InputStreamReader in = new InputStreamReader(System.in, "UTF-8");
    while ((c = (char) in.read()) != -1) {
        String currentText = field.getText();
        field.setText(currentText + c);
        Thread.sleep(250);
    }
}

注意 1:使用正确的编码代替 UTF-8。

注意 2:虽然我使用 Thread.sleep() 减慢了速度,但一次将一个字符写入一个字段本身就有点浪费,因为您不断地创建和丢弃字符串。做一些少量的缓冲,比如我前面提到的使用 StringWriter,可能是一种更好的方法,除非你在读入时有“实时提要”的感觉。

于 2011-09-05T02:57:03.080 回答
0

你试过这个

outputField.setText(""+b);

或者

outputField.setText(Integer.valueOf(b).toString());
于 2011-09-05T02:18:24.017 回答