java - java返回值的问题

标签 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;
}

最佳答案

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

在我看来,您误解了您发布的代码中的一些内容: 1. 在“getter”方法中注册监听器没有什么意义。监听器需要注册一次,一般在类的构造函数中 2. 注册监听器本身不会执行任何操作:它只是告诉处理程序在事件发生时(在本例中单击鼠标)调用您的方法。 3.除非您在多个地方重用监听器(您不在这个代码片段中,因为它是一个匿名类),否则您不需要获取事件源 - 您应该已经将其作为类中的成员字段.

因此,您的情况的答案是您的 JTable 应该是您的类的成员字段。那么 getId 方法只需要返回表中选定的行。根本不需要注册鼠标监听器,因为所选行在 JTable 中可用,无需任何额外工作。

关于java - java返回值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283591/

相关文章:

java - 使用鼠标输入

java - 使用 CSS 在 SWT CCombo 上设置按钮图标

java - 在 Java 中将日期字符串转换为纪元

python - Python函数返回None

javascript - Google 跟踪代码管理器自定义变量返回未定义

c++ - 示例代码中的范围问题,使用分隔符将字符串的std::string拆分为std::vector

java - 在 acm.program.GraphicsProgram 中找不到符号方法 addMouseListeners()

java - setText() 在 mouseClicked() 函数中不起作用

java - 该语句没有返回结果集。错误

java - 如何调试黑莓验证错误?