Java 一次单击即可完成多个事件

Java 一次单击即可完成多个事件,java,events,actionlistener,Java,Events,Actionlistener,我有一个程序,可以搜索并给你一个框架(Frame1)中的对象列表。我在菜单中添加了一个JInternalFrame对象创建,因此您可以在“保存和存储对象”标签下打开其中一个。您可以打开其中多个框架。在对象列表(在Frame1中)上有一个弹出菜单(menu1),您可以选择save选项。完成后,另一个弹出菜单将变为可见(menu2),显示已创建的不同帧(帧2、帧3等)。为此,每次单击第一个弹出菜单(menu1)上的“保存”按钮时,我都会添加一个for循环,因为打开搜索框(Frame1)后可以添加保存

我有一个程序,可以搜索并给你一个框架(Frame1)中的对象列表。我在菜单中添加了一个JInternalFrame对象创建,因此您可以在“保存和存储对象”标签下打开其中一个。您可以打开其中多个框架。在对象列表(在Frame1中)上有一个弹出菜单(menu1),您可以选择save选项。完成后,另一个弹出菜单将变为可见(menu2),显示已创建的不同帧(帧2、帧3等)。为此,每次单击第一个弹出菜单(menu1)上的“保存”按钮时,我都会添加一个for循环,因为打开搜索框(Frame1)后可以添加保存框(Frame4…)。问题是,每次鼠标侦听器的事件发生在第二个弹出菜单(menu2)中时,它都会累积。例如,我所做的第一次保存按其应该的方式保存。第二次保存将对象保存两次。第三个保存对象三次,以此类推

我猜这是因为该事件被多次调用。如果这就是问题所在,有没有办法在接到电话后清除事件?在事件参数字符串中,您可以看到,当被多次调用时,时间(when)是相同的

private void popSaveActionPerformed(java.awt.event.ActionEvent evt) {                                        
    savesCreados = frmMenuP.getSaves(); //# of JFrames(int)
    xy=getXY();
    menuSaves = frmMenuP.getMenuSaves(); //JMenuItems
    int selectedRowIndex = tabResults.getSelectedRow();
    nombre = tabResults.getValueAt(selectedRowIndex,0).toString(); //Object to save
    for(int i=0;i<savesCreados;i++){
        JPopupMenu2.add(menuSaves.get(i));
        System.out.println(i);
        menuSaves.get(i).addActionListener(new 
java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            popSaveMenu(evt);
        }
    });
    }
    JPopupMenu2.show(tabResults,xy[0],xy[1]);
    }



private void popSaveMenu(java.awt.event.ActionEvent evt){
    listaSaves = frmMenuP.getListaSaves();  //JFrames
    System.out.println(evt.paramString()); 
    for(int i=0;i<=frmMenuP.getSaves();i++){
        if(evt.getActionCommand().contains(Integer.toString(i))){
            System.out.println("Guardar " + i);

            listaSaves.get(i-1).saveAt(nombre);
        }
    }
    }
private void popSaveActionPerformed(java.awt.event.ActionEvent evt){
savesCreados=frmMenuP.getSaves();/#的JFrames(int)
xy=getXY();
menuSaves=frmMenuP.getMenuSaves();//JMenuItems
int-selectedRowIndex=tabResults.getSelectedRow();
nombre=tabResults.getValueAt(selectedRowIndex,0).toString();//要保存的对象
对于(int i=0;i