有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

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

  3. # 3 楼答案

    这就可以了,但我只在命令行中工作。不是从IDE

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

    我找到了一个代码,与C的“_getch()相当的函数

    
    public static void getCh() {  
            final JFrame frame = new JFrame();  
            synchronized (frame) {  
                frame.setUndecorated(true);  
                frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);  
                frame.addKeyListener(new KeyListener() {
                    @Override 
                    public void keyPressed(KeyEvent e) {  
                        synchronized (frame) {  
                            frame.setVisible(false);  
                            frame.dispose();  
                            frame.notify();  
                        }  
                    }  
                    @Override 
                    public void keyReleased(KeyEvent e) {  
                    }  
                    @Override 
                    public void keyTyped(KeyEvent e) {  
                    }  
                });  
                frame.setVisible(true);  
                try {  
                    frame.wait();  
                } catch (InterruptedException e1) {  
                }  
            }  
        }
    
  5. # 5 楼答案

    您可以使用JLine库的ConsoleReader。readVirtualKey()方法。见http://jline.sourceforge.net/apidocs/jline/ConsoleReader.html#readVirtualKey()

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

  6. # 6 楼答案

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



    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)
                {  
                }  
            }  
        }
    }