如何从swing中获取服务器中session的时间,如果session过期则提示重新登录。 
swing是通过java web start 方式启动的。 
现有个想法但不知道如何实现,在jframe以及所有组件中用一个新的线程来实现client清理session的动作, 
也就是说当用户在jframe中操作一次,那么新的线程启动来把session的时间归零。当用户不在次操作时,用个计数器去记录,当时间大于服务器中设置的session时间时,弹出重新登录的窗口, 我想问问大家有没有好的方法,或者请大家告诉我有没有一个对整个jframe包含内的所有组件都能监听的类。processEvent不可以 
因为它只能监听jframe。 大家有什么好的思路 给点意见和建议。 
  
谢谢大家

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wang139】截止到2008-07-22 08:36:46的历史汇总数据(不包括此帖):
    发帖的总数量:8                        发帖的总分数:440                      每贴平均分数:55                       
    回帖的总数量:89                       得分贴总数量:47                       回帖的得分率:52%                      
    结贴的总数量:7                        结贴的总分数:340                      
    无满意结贴数:1                        无满意结贴分:50                       
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:87.50 %               结分的百分比:77.27 %                  
    无满意结贴率:14.29 %               无满意结分率:14.71 %                  
    楼主加油
      

  2.   

    据我的理解,每个控件都对应自己的消息侦听器,容器不可以侦听到容器内控件的事件,除非容器内的控件在出来事件的时候也主动通知了容器。
    可不可以在JFrame上面添加MouseMotionListener,在鼠标移动的时候归零seesion时间。
      

  3.   

    swing中有监听组件消息的类,楼主去查查jdk看看
      

  4.   

    import java.awt.AWTEvent;
    import java.awt.Component;
    import java.awt.Frame;
    import java.awt.Toolkit;
    import java.awt.event.AWTEventListener;/**
     * AwtEventsCatcher
     * @author SageZk
     */
    public class AwtEventsCatcher { public static void main(String[] args) {
    TestFrame tf = new TestFrame();  //你的窗体
    class EventsListener implements AWTEventListener {
    private final Frame frm;
    public EventsListener(Frame frm) {
    if (frm == null) throw new NullPointerException("frm is null");
    this.frm = frm;
    }
    public void eventDispatched(AWTEvent event) {
    //获取产生事件组件所在的根容器
    Component c = (Component) event.getSource();
    while (c.getParent() != null) c = c.getParent();
    //判断产生事件组件的根容器是否是 frm
    if (c != this.frm) return;
    //要做的操作
    System.out.println(event.getID());
    }
    }
    Toolkit.getDefaultToolkit().addAWTEventListener(
    new EventsListener(tf),
    AWTEvent.MOUSE_EVENT_MASK  //替换成你自己想捕获事件的掩码
    );
    tf.setVisible(true);
    }}
      

  5.   

    程序中所有窗体的所有 AWT 事件你都可以在同一个地方监听,方法如上。
      

  6.   

    本地写一个线程远程调用来获取session的时间监控控件问题建议再每次往jframe中add控件的时候把控件用MAP或是什么的缓存起来那样比较好控制