我正在尝试使用java.io.OutputStream的write( int )方法,但是我不知道如何正确地将int转换回字符串。
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 */);
}
});我真的需要这方面的帮助。我试着用一种方法从一个整数中生成一个byte[],但是它把文本弄得乱七八糟,有很多空格。
发布于 2011-09-05 10:18:24
你试过这个吗?
outputField.setText(""+b);或
outputField.setText(Integer.valueOf(b).toString());发布于 2011-09-05 10:57:03
将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()减慢了速度,但每次向字段写入一个字符本身就有点浪费,因为您经常创建和丢弃String。做一些少量的缓冲,像我前面提到的使用StringWriter,可能是一种更好的方法,除非你想要让内容在读入时显示出来的“实时提要”感觉。
https://stackoverflow.com/questions/7303341
复制相似问题