Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相同的单击操作将不同的参数传递给鼠标侦听器。可能吗?_Java_Swing - Fatal编程技术网

Java 相同的单击操作将不同的参数传递给鼠标侦听器。可能吗?

Java 相同的单击操作将不同的参数传递给鼠标侦听器。可能吗?,java,swing,Java,Swing,我有一个鼠标监听器,可以在对话框中选择JTable中的一行,比如a,它有以下代码 resultTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(java.awt.event.MouseEvent evt) { thePatientFinderController.jTableMouseReleased(evt)

我有一个鼠标监听器,可以在对话框中选择
JTable
中的一行,比如a,它有以下代码

resultTable.addMouseListener(new java.awt.event.MouseAdapter() 
    {
        public void mouseReleased(java.awt.event.MouseEvent evt) 
        {
            thePatientFinderController.jTableMouseReleased(evt);
        }
    });
以及方法,该方法被调用

public void jTableMouseReleased(java.awt.event.MouseEvent evt)
{
   // Business logic
 }
我正在使用非常相同的
JTable
,在另一个对话框中说B。现在,如果我在这个对话框中选择了一行,我想让鼠标松开以执行不同的操作

我尝试了另一种类似这样的鼠标释放方法,使用不同的参数

resultTable.addMouseListener(new java.awt.event.MouseAdapter() 
    {
        public void mouseReleased(java.awt.event.MouseEvent evt) 
        {
            thePatientFinderController.jTableMouseReleased(evt);
        }
        public void mouseReleased(java.awt.event.MouseEvent evt, int a) 
        {
            thePatientFinderController.jTableMouseReleased(evt,a);
        }
    });
它不起作用,只是调用了第一个方法。所以,我被困在这里

那么,有没有办法调用第二个方法?是否需要不同的逻辑


结论:同一个按钮应该根据不同的对话框调用不同的MouseRelease事件方法。

这样不行。记住:这些侦听器是在框架内调用的。该框架只知道基本MouseListener接口。它有没有的想法,即您在类中有一些实现接口的其他方法

问问自己:框架应该如何知道要获取哪些其他参数,以及选择和传递这些参数的方法

换句话说:如果只有一个MouseListener实例,那么您放入该类/方法的代码需要以某种方式获取进一步的上下文,以防它需要根据该上下文执行不同的“操作”


意思:要么你有一个获取上下文并决定做什么的侦听器,要么(可能是更简洁的设计):你实现不同的
鼠标侦听器,并根据上下文使用“匹配的”鼠标侦听器。

实现不同的鼠标侦听器意味着什么?我不明白你的意思。您能解释一下吗?您可以动态添加/删除侦听器。因此,与其让一个监听器做两件事,不如让两个不同的监听器实现各自做不同的事。太棒了!!!你能从帽子里拿出一个小代码片段吗?因为我试过了,它给我带来了一个错误。不是真的。您已经编写了实现该接口的代码。那么你为什么需要另一个例子。。。让你看看你已经做了什么。另请注意:避免在评论中提出新问题。如果你真的有一个新问题,问一个新问题。阅读并将所有相关信息添加到新问题中。除此之外:您似乎真的缺乏java的基本知识。您确定已经准备好编写GUI应用程序了吗?Swing是一个复杂的框架,对于真正缺乏基础知识的人来说。。。这很难。你会从一个问题跑到下一个问题。我宁愿建议你退后一步。例如,首先仔细阅读/使用关于swing组件的oracle教程,甚至:java基础知识。因为我尝试了它,它给我带来了一个错误。-然后修复错误。我们不知道错误是什么,也不知道代码在做什么。编程就是调试错误。为什么要添加SwingWorker标签?没有使用SwingWorker.Oops的发布代码!打字错误!我的意思是说,它抛出了一个警告说,这种方法从来没有使用过。