Java C'的等效函数;s"_getch();在爪哇?

Java C'的等效函数;s"_getch();在爪哇?,java,c,getch,Java,C,Getch,我使用GoogleWave,我想模拟在你真正按下回车键之前发送消息的能力 是否有一个Java等价于C函数\u getch()?最初我想到System.in.read(),但您需要在不按Enter键的情况下获取输入。这需要本机控制台交互(每个系统下的控制台都不同) 所以答案是“不,没有直接的模拟”。在java中没有等价的getch。您还可以创建GUI组件并绑定keyEvent侦听器。您可以使用JLine库的consolereReader.readVirtualKey()方法。看 如果您不想使用第三

我使用GoogleWave,我想模拟在你真正按下回车键之前发送消息的能力


是否有一个Java等价于C函数
\u getch()

最初我想到System.in.read(),但您需要在不按Enter键的情况下获取输入。这需要本机控制台交互(每个系统下的控制台都不同)


所以答案是“不,没有直接的模拟”。

在java中没有等价的getch。您还可以创建GUI组件并绑定keyEvent侦听器。

您可以使用JLine库的consolereReader.readVirtualKey()方法。看


如果您不想使用第三方库,并且您使用的是Mac OS X或UNIX,您可以利用JLine用于读取单个字符的相同技巧:只需在运行程序之前执行命令“stty-icanon min 1”,然后System.in将不再进行行缓冲,您可以使用System.in.read()获取单个字符。不幸的是,这个技巧在Windows上不起作用,所以您需要使用本机库来提供帮助(或者只使用JLine)。

我找到了一个代码,相当于C的“\u getch()


C的getch()函数的Java定制方法




你为什么不创建一个变量扫描器,在任何地方都不用它,程序

pause0=pause1.nextInt()


:l这似乎要简单得多…另外,您可以放一条消息,说“按继续”。

这会起作用,但我只能从命令行工作,不能从IDE工作

 Console c =System.console();
Reader r = c.reader();
try {
    num=    r.read();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

\u getch()
不是标准的C。如果我错了,请纠正我,但不应该将
键按下
键释放
,和
键键入
在它们前面有
@覆盖
?我认为它不会起作用。除此之外,还有一个很好的答案+1@Override只是一个注释,没有它方法重写仍然可以正常工作它确实告诉编译器该方法应该重写其他方法。这个函数如何与C的_getch()等价如果它返回void?它不需要返回一个字符吗?因为它有覆盖符号,我们需要编写实现它的代码来使用它吗?你能删除无用的
synchronized
/
wait()
在正确的回调中会更好。在Windows 7系统上尝试此操作会一直阻塞,直到输入“\n”。这是一个复制粘贴器,甚至不好,一年多之后。
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.*;

class getch
{
    public static void getCh()
    {  
        final JFrame frame = new JFrame();  
        synchronized(frame)
        {  
            frame.setUndecorated(true);  
            frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);  
            frame.addKeyListener(new KeyListener()
            {  
                public void keyPressed(KeyEvent e)
                {  
                    synchronized(frame)
                    {  
                        frame.setVisible(false);  
                        frame.dispose();  
                        frame.notify();  
                    }  
                }  

                public void keyReleased(KeyEvent e)
                {  
                }  

                public void keyTyped(KeyEvent e)
                {  
                }  
            });
            frame.setVisible(true);  
            try
            {  
                frame.wait();  
            }
            catch(InterruptedException e1)
            {  
            }  
        }  
    }
}
 Console c =System.console();
Reader r = c.reader();
try {
    num=    r.read();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}