免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1598 | 回复: 3
打印 上一主题 下一主题

这个好像属于JAVA中的监听问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-05 10:00 |只看该作者 |倒序浏览
是这样的,我写了一个JAVA的应用程序是在CMD下面运行的。

程序里面有两个方法。




  1. public class Test {

  2.         public void A(){
  3.                 while(true){
  4.                         System.out.println("###################");
  5.                 }
  6.         }

  7.         public void B(){
  8.                 for(int i=10;i>=0;i--){
  9.                         System.out.println(i);
  10.                 }
  11.                                 System.exit(0);
  12.         }
  13.                 public static void main(String args[]){
  14.                 new Test().A();
  15.         }
  16. }
复制代码



在CMD下运行java Test 程序开始运行!要是想结束这个程序需要按一下Ctrl+c这样程序一下子就停了,我是想实现

当用户按下Ctrl+c之后程序执行里面的B()方法,或是按下别的键也行比如按下A键或是其它的组合键。

我在GOOGLE里面找了两天,可能也是关键词没整对!找到的都是有关Swing中的监听。请大家帮帮我!!

论坛徽章:
0
2 [报告]
发表于 2006-09-05 13:43 |只看该作者
增加一个线程,接收键盘输入。

论坛徽章:
0
3 [报告]
发表于 2006-09-05 17:14 |只看该作者
简单实现了一下,仅供参考:

  1. public class Test {
  2.         private int flag = 0;
  3.        
  4.         public void A() {
  5.                 while (flag == 0) {
  6.                         System.out.println("###################");
  7.                 }
  8.         }
  9.        
  10.         public void B() {
  11.                 flag = 1;
  12.                 for (int i = 10; i >= 0; i--) {
  13.                         System.out.println(i);
  14.                 }
  15.         }
  16. }
复制代码


  1. import java.lang.reflect.InvocationTargetException;

  2. public class CtrlCTest extends Thread {
  3.         private static CtrlCTest ctrlCTest = null;

  4.         public static void registerCtrlCTest() throws IllegalArgumentException,
  5.                         InvocationTargetException, NoSuchMethodException,
  6.                         SecurityException, IllegalAccessException {
  7.                 if (ctrlCTest == null) {
  8.                         ctrlCTest = new CtrlCTest();
  9.                         Class[] cls = { Thread.class };
  10.                         Object[] arg = { ctrlCTest };
  11.                         Runtime.getRuntime().getClass().getMethod("addShutdownHook", cls).invoke(
  12.                                         Runtime.getRuntime(), arg);                       
  13.                 }
  14.         }

  15.         public void run() {
  16.                 System.out.println("do run");
  17.                 TestMain.shutdown();
  18.         }
  19. }
复制代码


  1. public class TestMain {
  2.         private static Test test = null;

  3.         public static void main(String args[]) {
  4.                 test = new Test();
  5.                 try {
  6.                         CtrlCTest.registerCtrlCTest();
  7.                         test.A();
  8.                 } catch (Exception e) {
  9.                         e.printStackTrace();
  10.                 }               
  11.         }
  12.        
  13.         public static void shutdown() {
  14.                 if(test!=null) {
  15.                         test.B();
  16.                         test = null;
  17.                 }
  18.         }
  19. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-09-06 23:41 |只看该作者
Console App能实现键盘监听吗?得gui app才可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP