我想设计一个程序,使用单机版本,文字界面,运行起来类似dos程序的那种。要求用户登陆使用,但是这里有一个问题,就是想在用户登陆以后,为了防止用户忘记退出就离开了,希望程序能够统计用户连续无操作的时间,如果超过一定数值就让用户自动退出。关键就是这里 的用户连续无操作时间应该怎么做?如何来计算?java应该怎么来实现?
请高手指点,谢谢了。高分相送。

解决方案 »

  1.   

    非常感谢。不过我刚刚开始使用java,楼上的是否能够给出简单的源代码示例程序出来?谢谢了。
      

  2.   

    楼上的高手能不能给段示例程序啊?我用java的时间表示很久,给我段代码学习一下也好。谢谢了
      

  3.   

    楼上的高手能不能给段示例程序啊?我用java的时间不是很久,给我段代码学习一下也好。谢谢了
      

  4.   

    多线程的应用: ---- 首先,在Init()方法中对要创建的线程(M_pointThread)进行定义及初始化:     Thread M_pointThread=null;---- 然后,在Start()和Stop()方法中加入以下代码: 
    ---- //当打开浏览器页面开始载入Java Applet代码时,执行start()方法     public void start()    
        {
    if (M_pointThread==null)   //如果线程尚未产生
    {
    M_pointThread=new Thread(this);  //则创建一个新线程
    M_pointThread.start();   //启动该线程
              }
         }
    //在当前页面关闭或转向其他Web页面时,
    调用stop()方法,以释放系统资源
         public void stop()
         {
                 if (M_pointThread!=null)  
    //如果线程尚在运行
                  {
                M_pointThread.stop(); 
      //停止该线程            M_pointThread=null;    
    //释放线程所占资源
                   }
          }
    ---- 3.编写线程运行的代码: 
    public void run()
    {
       M_graphics=getGraphics();
       M_graphics.setXORMode(Color.white);  
    //采用异或方法绘制“十字”游标
       while(true)
       {
           try
          {
    if(MouseMove==true)   //侦测到鼠标的移动后,
    执行以下代码
    {   //当鼠标位于以下区域(Java Applet布局)
    内时,执行画线操作
    if(x0 >50 && x0< 600){M_graphics.drawLine
    (x0,30,x0,380);}
    if(y0 >30 && y0 <380){M_graphics.drawLine
    (50,y0,600,y0);}
    if(X >50 && X< 600){M_graphics.drawLine
    (X,30,X,380);}
    if(Y >30 && Y< 380){M_graphics.drawLine
    (50,Y,600,Y);}
    MouseMove=fase;
    x0=X;     //传递当前座标参数
               y0=Y; 
            }
    }catch(NullPointerException npe){}  
      //捕获可能出现的异常
      }自己google下吧...大家搜到的东西都差不多
      

  5.   

    监听键盘及鼠标事件 ---- 在Java Applet小程序中,单击按钮、键入文本、使用鼠标或执行任何与界面相关的动作时,就发生一个事件,小程序就会作出适当的反应。 ---- 在本例中,我们通过使用action()方法来获得Java Applet小程序运行时所发生的事件。语句格式如下: public boolean action(Event evt,Object arg)
        {
            FileName=text1.getText();   
    //提取文本框中输入的参数
            ReadData();
    //调用读数据流数据的方法
            return true; 
         //处理完毕,不需要其他方法再做处理
        }---- 上面的action()方法中含有两个参数:一个是Event类的一个对象evt;另一个是Object类的一个对象arg。Event对象告诉我们发生了哪种事件,而Object对象将进一步告诉我们有关该事件的情况。每当有Event监听的事件发生时,Java Applet便自动调用该action()方法。 
    ---- 至此,在掌握了上述编程中的一些要点后,我们便可以成功地编制出一个完整的绘制K线的Java Applet小程序了(完整的源代码附后)。 
      

  6.   

    非常感谢楼上的回复。不过上面的是使用applet的例子。我上网搜到的都是关于图形界面的。不知道有没有直接在类似dos界面下的监视键盘输入的?如果用户在一定时间间隔内没有输入,就相当于离开了。应该怎么做?非常感谢。我刚刚接触java,对于这个问题查找了很多都没解决。希望多多指点。谢谢
      

  7.   

    就是直接一个public class ,然后其中的main函数里面运行,如何监测该程序的用户的活跃性,如果一定时间内没有操作就相当于用户离开,就让该用户退出
      

  8.   

    首先,你调用System.in.read()时,这个线程会被阻塞掉,也就是说如果用户一直不输入,你的线程一直完不了。所以不能在main线程中调用System.in.read(),而要新开一个线程,在其中使用read()(你可以在新开的线程中直接处理用户输出,或者使用线程通讯和周步的方法将数据发送给另一工作者线程来处理。)新开的线程和main线程共享一个变量,就是用户空闲时间,main线程循环sleep一段时间,醒过来就把用户空闲时间加上时间间隔,判断空闲时间是否超时,如果超时就强制关闭响应用户输入的那个线程,否则接着睡。响应用户输入的线程每次得到输入后,都将用户空闲时间变量(就是和main线程共享的那个变量)清零。你要理解,对于applet的每个输入空间都是跑在自己的线程上的,applet实际上已经封装了将响应用户输入作为单独线程跑的逻辑。楼主问到了这个逻辑的根本,要自己实现,所以applet的那些代码没有参考价值。要点就是,新开线程等待用户输入,另开线程记时,记时线程有权强制关闭响应用户输入的线程。
      

  9.   

    谢谢楼上的各位,特别是murasaki(风羽)  。我好好查找一下资料。本人以前用过一段时间的java,后来改用c++了,这个项目要用到java,所以没办法,只得继续学习继续用了。谢谢