您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java-如何扩展InputStream从JTextField读取?

Java-如何扩展InputStream从JTextField读取?

这个实施怎么样

import java.io.IOException;
import java.io.InputStream;

import javax.swing.JTextField;


public class JTextFieldInputStream extends InputStream {
    byte[] contents;
    int pointer = 0;

    public JTextFieldInputStream(final JTextField text) {

        text.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                if(e.getKeyChar()=='\n'){
                    contents = text.getText().getBytes();
                    pointer = 0;
                    text.setText("");
                }
                super.keyReleased(e);
            }
        });
    }

    @Override
    public int read() throws IOException {
        if(pointer >= contents.length) return -1;
        return this.contents[pointer++];
    }

}

要使用此输入流,请执行以下操作

 InputStream in = new JTextFieldInputStream( someTextField );
 char c;
 while( (c = in.read()) != -1){
    //do whatever with c
 }

它只有在我按Enter键时才读吗?

它在您调用时读取,in.read()如果返回值-1表示流结束

(并且我将能够进行修改,以使Enter键清空JTextField吗?)

您需要添加一个动作侦听器,并且此功能与输入流的工作无关

java 2022/1/1 18:42:45 有362人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶