PDA

View Full Version : سوال: مشابه getch در جاوا



newxenon
دوشنبه 26 بهمن 1388, 13:02 عصر
می خواستم ببینم تو جاوا چیزی هست که دقیقا کار getch توی ++C را انجام بده ؟:متفکر:
میخوام فقط یه کاراکتر از ورودی بگیرم و از کاراکتر گرفته شده توی برنامه استفاده کنم و نیازی به زدن کلید Enter هم نباشه ...

saeedIRHA
دوشنبه 26 بهمن 1388, 13:48 عصر
می خواستم ببینم تو جاوا چیزی هست که دقیقا کار getch توی ++C را انجام بده ؟:متفکر:
میخوام فقط یه کاراکتر از ورودی بگیرم و از کاراکتر گرفته شده توی برنامه استفاده کنم و نیازی به زدن کلید Enter هم نباشه ...

راه مستقیمی در جاوا برای این کار وجود نداره! اگر حتما مجبور هستی از ()getch استفاده کنی باید از طریقه JNI این کارو انجام بدی.
موفق باشد

mahdi68
دوشنبه 26 بهمن 1388, 14:05 عصر
()charAT کاراکتر از رشته میخونه ولی نمیدونم چه طوری میشه بدون اینتر به برنامه گفت که ورودی وارد شده را بخونه !!!!
از قطعه کدی مانند کد زیر هم میتونین برای خواندن کاراکتر به کاراکتر استفاده کنید

mport java.io.*;
public class GetCharMethod
{
public static void main(String args[]) throws IOException
{
char c;
System.out.println("Enter any character or Enter
the charater E to exit");
while ( ( c = getChar() ) != 'E' )
{
System.out.println("You have entered " + c);
}
}
static public char getChar() throws IOException
{
char ch = (char) System.in.read();
input();
return ch;
}
static public void input() throws IOException
{
while ( (char) System.in.read() != '\n' );
}
}

newxenon
دوشنبه 26 بهمن 1388, 16:11 عصر
مرسی دوستان :چشمک:
کدی که استفاده کردم ازش تو برنامه ، تقریبا مشابه همین کد بالاست ...
ولی من میخوام داخل برنامه برای گرفتن ورودی بیش از یه کاراکتر نشه تایپ کرد :ناراحت:

saeedIRHA
دوشنبه 26 بهمن 1388, 18:18 عصر
مرسی دوستان :چشمک:
کدی که استفاده کردم ازش تو برنامه ، تقریبا مشابه همین کد بالاست ...
ولی من میخوام داخل برنامه برای گرفتن ورودی بیش از یه کاراکتر نشه تایپ کرد :ناراحت:

همونطور که گفتم این کار امکانش نیست مگر از JNI استفاده کنی، والی بعضی موقع ها هم میشه کلک زد ;-)
به این ۲ تا فایلی که برات گذاشتم دقت کن :
main.java


public class main
{ public static void main(String[]args)
{
System.out.println("Calling ClassGetCh....");
System.out.println("!!! Press Ctrl+z to exit !!!");
ClassGetCh myClass = new ClassGetCh();
}
}

ClassGetCh.java


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JDialog;
import javax.swing.JFrame;

public class ClassGetCh extends JDialog implements KeyListener
{
public ClassGetCh()
{
super(new JFrame("test"));

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE) ;
addKeyListener(this);
setModal(true);
setSize(0, 0);
setVisible(true);
hide();
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {

System.out.println("Key Pressed: "+e.getKeyChar());
//ctrl+z ascii code is 0x1A Hex
if(e.getKeyChar()== 0x1A)
{
System.out.println("Ctrl+z Pressed!\n[!]Closing application.");
System.exit(0);
}
}
}