返回值java的问题

时间:2014-12-03 23:25:42

标签: java return mouselistener

我有这个包含MouseEvent的方法。如何返回idu变量? 它就像一个方法中的方法或如何调用它,我无法弄清楚top返回idu变量的方式。

public int getId() {   
    int idu;
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 1) {
            JTable target = (JTable)e.getSource();
            int row = target.getSelectedRow();
            Object record = data[row][0]; 
            idu = (Integer) record;                
        }   
    }
    });  
return idu;
}

2 个答案:

答案 0 :(得分:1)

几乎在所有情况下,“聆听者”都是如此。模式涉及使用没有返回值的方法注册侦听器。通常,来自侦听器的返回值是没有意义的,因为它被返回给调用者,该调用者没有关于如何处理它的上下文。

在我看来,你误解了你发布的代码中的一些内容: 1.在“getter”中注册听众是没有意义的。方法。监听器需要注册一次,通常在类的构造函数中 2.注册一个监听器并不能自己做任何事情:它只是告诉处理程序在事件发生时调用你的方法(在这种情况下点击鼠标)。 3.除非你在几个地方重复使用听众(你不是因为这是一个匿名课程而不在这个代码中),那么你不需要获得事件来源 - 你应该已经将它作为班级中的成员字段。

因此,您的案例的答案是您的JTable应该是您班级的成员字段。然后getId方法只需要返回表的选定行。无需注册鼠标侦听器,因为所选行在JTable中可用而无需任何额外工作。

答案 1 :(得分:0)

考虑以下问题:

什么时候可以准备好使用idu值?当方法getId()完成运行时,或者当用户在表格上单击鼠标按钮时?

你的代码实际上做的是注册事件监听器,有点像设置警报或安排任务以供日后使用,然后进入休眠状态,或者返回执行你现在需要做的任何其他任务。

退出idu方法时,getId()的值并不存在,因为mouseClicked()方法中的代码尚未成功执行。它只会在事件实际发生时执行。