CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

在java控制台程序中,怎么读入组合键ctrl+z?

楼主youyue(由月)2005-03-04 11:37:19 在 Java / J2SE / 基础类 提问

我在java控制台程序中,让屏幕一直在翻滚显示我获取的数据信息(很多,n行)。但现在我想要在显示过程中,按ctrl+z能够停止显示,应该怎么写代码呢?  
  我觉得问题难点在于:  
  1,ctrl、alt、shift在控制台程序中如何读取?  
  2,如何不敲回车就把输入的字符提交给程序?  
  3,如何控制屏幕回显?  
   
  查了n多资料没有解决问题,跪求各位高手不要在潜水观望请挺身而出帮我这一回吧! 问题点数:0、回复次数:29Top

1 楼youyue(由月)回复于 2005-03-04 11:53:14 得分 0

就算不会解答,也请过路的好心人帮我顶一下吧Top

2 楼Z_Beginner(探索中)回复于 2005-03-04 12:42:52 得分 0

我觉得第二个问题只要加个判断输入框是否与上次相同,如果不同就提交给程序,相同不提交。Top

3 楼kekelehuo(可可乐)回复于 2005-03-04 12:53:53 得分 0

我也是刚开始自学这个问题我查过。  
   
  通过InputEvent类可以接收输入的按键,在InputEvent类里定义了一些掩码。他们是int型的整数。例如:鼠标左健是BUTTON1_MASK,鼠标右键是BUTTON2_MASK,还有CTRL_MASK,ALT_MASK,SHIFT_MASK.  
   
  比如判断按下CTRL+鼠标左键:   InputEvent.CTRL_MASK+InputEvent.BUTTON1_MASK;Top

4 楼yunjava(呵呼)回复于 2005-03-04 13:21:55 得分 0

upTop

5 楼youyue(由月)回复于 2005-03-04 14:06:23 得分 0

awt里的event,能在java命令行程序中使用吗?Top

6 楼liuchunjp()回复于 2005-03-04 14:08:31 得分 0

InputEvent不成Top

7 楼BasaraTracy(不屈斗志)回复于 2005-03-04 15:05:40 得分 0

期待中...Top

8 楼youyue(由月)回复于 2005-03-04 15:16:12 得分 0

可能是我表述错误,不该说控制台程序,应该说命令行程序。  
  窗口程序中我会读取组合键,但命令行程序中有办法实现吗?Top

9 楼chinajava(chinajava)回复于 2005-03-04 15:51:48 得分 0

2,如何不敲回车就把输入的字符提交给程序?  
  这个不能实现!  
  Top

10 楼fightboy(眼泪哗哗的)回复于 2005-03-04 16:21:24 得分 0

同意   chinajava(chinajava)   的观点。  
  磨办法啊。  
   
  绕路走吧。曲线救JavaTop

11 楼liuchunjp()回复于 2005-03-04 16:38:51 得分 0

不可能实现Top

12 楼Z_Beginner(探索中)回复于 2005-03-04 17:56:39 得分 0

我觉得可以实现,只要用线程间隔一定时间读取输入的内容,在判断是否提交给程序。Top

13 楼knight_yl(knight_yl)回复于 2005-03-04 18:05:30 得分 0

可以用java   的swing来模拟实现控制台。  
   
  保证效果一样,  
   
  ^_^.  
   
  Top

14 楼knight_yl(knight_yl)回复于 2005-03-04 18:07:08 得分 0

这儿可能是控制台里面inputstream的限制,如果突破这个限制就可以了。  
  具体问题具体分析哦,Top

15 楼enrico(小甭)回复于 2005-03-04 19:03:32 得分 0

路过,帮你顶Top

16 楼bigc2000(公元2005年4月9日)回复于 2005-03-04 19:48:48 得分 0

不会,还是用vc吧Top

17 楼kaymo( 。。。 )回复于 2005-03-04 22:41:23 得分 0

不错Top

18 楼wialways(唯一)回复于 2005-03-05 12:48:07 得分 0

upTop

19 楼eureka0891(迷茫中...)回复于 2005-03-05 13:37:28 得分 0

用swing还行吧,  
  用console?  
  不可能吧,   cttl   +   z是返回啊,  
  程序不可能运行了Top

20 楼Idora(我不当老大已经很多年,恩)回复于 2005-03-05 17:02:31 得分 0

楼主可以考虑将结果输出到文件,这样看结果Top

21 楼yxhzj(余华[学习J2EE中])回复于 2005-03-05 17:21:03 得分 0

upTop

22 楼youyue(由月)回复于 2005-03-05 22:48:23 得分 0

那很多unix下用java做的命令行程序,都没有实现这些功能吗?Top

23 楼bky2003(beyond)回复于 2005-03-05 23:24:43 得分 0

关注Top

24 楼GFNotFoundException(喜欢下雨天)回复于 2005-03-05 23:51:29 得分 0

学习ing~问题确实是令人烦恼,不过问题也促使着一个人在进步!Top

25 楼fightboy(眼泪哗哗的)回复于 2005-03-07 10:11:57 得分 0

各位,下边是我失败的代码,我觉得是没有办法了。  
  回车提交和回显好像系统提供的东西。  
   
  磨办法啊。  
   
   
  import   java.io.FileDescriptor;  
  import   java.io.FileInputStream;  
  import   java.io.PrintStream;  
  import   java.util.Timer;  
  import   java.util.TimerTask;  
   
  /**  
    *   This   class   is   TODO   class.  
    *   @author   wenzhou  
    *   @version   $Id$  
    */  
   
  public   class   TestInput  
  {  
  public   StringBuffer   cacheString   =   new   StringBuffer();    
  public   boolean   blockOutput   =   false;    
   
  public   TestInput()   throws   Exception  
  {  
  PrintStream   orgOut   =   System.out;  
  //下边一段模拟输出  
  final   Timer   timer   =   new   Timer();  
  TimerTask   task   =   new   TimerTask()   {  
  int   i   =   1;  
  public   void   run()  
  {  
  println("Test   output;   "   +   (i++));  
  if(i   >   1000)  
  {  
  timer.cancel();  
  }  
  }  
  };  
  timer.schedule(task   ,1000L,1000L);  
   
  //下边一段想办法修改输入,未果  
                                      //下边这两句是打算把系统的BufferedInputStream去掉。以为就不缓冲了。结果  
                                      //还是不行。  
  //FileInputStream   fdIn   =   new   FileInputStream(FileDescriptor.in);  
  //System.setIn(fdIn);  
  while(true)  
  {  
  FileDescriptor.in.sync();  
  if(System.in.available()   !=   0)  
  {  
  char   c   =   (char)   System.in.read();  
                                                                            //按S键暂停打印  
  if(c   ==   's')  
  {  
  setBlock(true);  
  }  
                                                                            //按Q键恢复打印  
  else   if(c   ==   'q')  
  {  
  setBlock(false);  
  }  
  }  
  }  
  }  
   
  //搞个缓冲把输出存起来  
  public   void   setBlock(boolean   block)  
  {  
  blockOutput   =   block;  
  if(!blockOutput)  
  {  
  System.out.println(cacheString);  
  cacheString   =   new   StringBuffer();  
  }  
  }  
   
  public   void   println(String   s)  
  {  
  if(blockOutput)  
  {  
  cacheString.append(s);  
  cacheString.append("\n");  
  }  
  else  
  {  
  System.out.println(s);  
  }  
  }  
   
  public   static   void   main(String[]   args)   throws   Exception  
  {  
  new   TestInput();  
  }  
  }  
  Top

26 楼d23372()回复于 2005-03-07 10:21:30 得分 0

不会,关注,顶!!!Top

27 楼edsonwen()回复于 2005-03-07 10:31:27 得分 0

只能帮顶!Top

28 楼youyue(由月)回复于 2005-03-08 10:02:45 得分 0

再顶Top

29 楼fightboy(眼泪哗哗的)回复于 2005-03-08 11:19:47 得分 0

去掉回显可以像这个样子:  
   
  System.out.print("Test   abcde");  
  String   erase   =   "\b   \b";  
  System.out.print(erase);  
  System.out.print(erase);  
  Top

相关问题

  • CTRL-Z组合键的ASCII是多少?
  • 请问组合键ctrl_z的ASC代码;
  • 如何扑捉键盘组合键,比如ctrl+q,ctrl+w...............
  • 如何在PreTranslateMessage(MSG* pMsg) 截获Ctrl+X组合键?
  • 请问如何锁住"alt + ctrl + del" 的组合键?
  • 请问如何编程实现屏蔽Ctrl-Alt-Del组合键?
  • 怎么模拟Ctrl+Enter组合键按下!
  • 怎么得到组合键的键值?Ctrl+(A, B, ...)
  • ctrl+? or alt+?组合键在c++/c中实现的思想是?
  • 怎么样实现组合键,如ctrl+enter...

关键词

  • 控制台
  • 命令行
  • 鼠标
  • 程序
  • cachestring
  • blockoutput
  • inputevent
  • 提交
  • testinput
  • filedescriptor

得分解答快速导航

  • 帖主:youyue

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo