在一个项目上,我通过一个类似于控制台的小窗口运行Java应用程序。由于这里有一个很棒的社区,我设法通过从流程输出数据来解决问题,但是由于没有输入流,我运行的命令行应用程序将不断出错。
基于该线程中最后一个有用的答复,我想我将以类似的方式JTextFieldInputStream extends InputStream实现该实现,但是在javadocs中以及整个google和互联网中寻找某个类,该类确实没有发现任何解释方法。
JTextFieldInputStream extends InputStream
因此,我需要一些链接,示例,教程,示例代码,就像上一个主题一样。给我只提供一个扩展InputStream的类,当我按Enter时可以将其扩展为从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表示流结束
in.read()
-1
(并且我将能够进行修改,以使Enter键清空JTextField吗?)
您需要添加一个动作侦听器,并且此功能与输入流的工作无关