我有一个包含 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/