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

これを試しましたか

outputField.setText(""+b);

また

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

ある種の GUI のテキスト フィールドのように見えるものに OutputStream を送信するのは非常に奇妙に思えます。それが本当に欲しいものだと確信していますか?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() を使用してこれを遅くしましたが、文字列を常に作成して破棄しているため、一度に 1 つの文字をフィールドに書き込むこと自体がやや無駄です。先に述べたように StringWriter を使用するなど、少量のバッファリングを行うことは、読み込まれたときに何かが表示される「ライブ フィード」の感覚を求めていない限り、より良いアプローチになる可能性があります。

于 2011-09-05T02:57:03.080 に答える