回答
最初我想到了System.in.read(),但是您需要在不按Enter的情況下獲得輸入。這需要本地控制檯交互(並且每個系統下的控制檯都不相同)。
所以答案是「不,沒有直接的模擬」。
在java中沒有getch等價物。你也可以創建一個GUI組件並綁定keyEvent監聽器。
您可以使用JLine庫的ConsoleReader.readVirtualKey()方法。請參閱http://jline.sourceforge.net/apidocs/jline/ConsoleReader.html#readVirtualKey()。
如果您不想使用第三方庫,並且您使用的是Mac OS X或UNIX,則可以利用JLine用來讀取單個字符的相同技巧:只需執行命令「stty -icanon min 1」,然後運行你的程序,然後System.in將不再被行緩衝,你可以使用System.in.read()獲得一個單獨的字符。不幸的是,這個技巧在Windows上不起作用,所以你需要使用本地庫來幫助(或者僅僅使用JLine)。
我發現了一個代碼,相當於函數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) {
}
}
}
糾正我,如果我錯了,但不應該'keyPressed','keyReleased'和'keyTyped'有'@ Override'在他們面前?我認爲這不會起作用。除此之外,優秀的答案。 +1 – aggregate1166877 2012-09-11 19:08:56
@Override只是一個註釋,如果沒有它,方法覆蓋仍然可以正常工作。它所做的只是告訴編譯器,方法*應該重寫其他一些方法。 – lynks 2012-11-08 16:43:44
如果函數返回void,該函數如何等價於C的_getch()?它不需要返回一個字符嗎?由於它具有重寫符號,我們是否需要編寫實現它的代碼才能使用它? – Joe 2015-09-15 22:14:52
定做方法在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)
{
}
}
}
}
功能
你爲什麼不創建一個變量掃描器,不要在任何地方使用它,程序。
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();
}
- 1. C++中的fprint的等價函數
- 2. 等價的C#函數Excels Norm.S.Inv函數
- 3. Application.DoEvents() - >在java中的等價函數?
- 4. Java等價於ntohll函數
- 5. Java函數的等價調用
- 6. C#等價於Java的Character.digit
- 7. C++等價的Java Enum.valueOf()
- 8. C++等價的Java泛型
- 9. C++等價於Java的BlockingQueue
- 10. Java中的C#OnDeserialized/OnSerializaed的等價物?
- 11. C#中Java的SortedMap.tailMap的等價SortedDictionary
- 12. C#等價的Class.forName()的Java中
- 13. c在java構造函數上的尖銳等價物
- 14. Java中的Objective-C powf()等效函數
- 15. 用戶定義的函數,它等價於C中的strlen()C
- 16. Java中C#鎖定的等價物?
- 17. C#中的Java Observer/Observable等價物?
- 18. Java中的IntPtr(C#)等價於什麼?
- 19. C中Java的System.getProperty(「java.io.tmpdir」)等價嗎?
- 20. jQuery等價的JavaScript函數
- 21. 這個C++函數如何與等價的java函數不同地工作?
- 22. MATLAB中有稀疏的任何C++/C等價函數
- 23. 等價於C++中的C++
- 24. C++中是否存在Python中的「in」函數的等價物?
- 25. Python的等價函數lsqcurvefit()函數
- 26. 什麼是Java中的「this」函數的Ruby等價物?
- 27. JavaScript中的返回函數的Java等價物
- 28. Python中的C的strnset()有沒有等價的函數?
- 29. MATLAB的robustfit的Java或C等價物
- 30. 尋找C#的XmlConvert.EncodeName的Java等價物
'_getch()'也不是標準C. – GManNickG 2009-12-08 02:10:22