Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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_Checkbox_Mouselistener - Fatal编程技术网

Java 在复选框上添加鼠标拖动侦听器

Java 在复选框上添加鼠标拖动侦听器,java,swing,checkbox,mouselistener,Java,Swing,Checkbox,Mouselistener,每次用户尝试拖动复选框并将其从一个面板粘贴到另一个面板时,我都需要执行一些操作。 我知道Java提供拖放API,但我并不希望复选框从一个面板拖到另一个面板。 我想要的是给用户一种拖放的错觉,在幕后我想要我的代码运行并执行某些操作。我该怎么做 现在,当我将复选框image1从panelleft拖放到panel_right时,我希望在用户的拖放操作的后台运行某些代码 for(ResourceListObject currentImage : imageList ){ image

每次用户尝试拖动复选框并将其从一个面板粘贴到另一个面板时,我都需要执行一些操作。 我知道Java提供拖放API,但我并不希望复选框从一个面板拖到另一个面板。 我想要的是给用户一种拖放的错觉,在幕后我想要我的代码运行并执行某些操作。我该怎么做

现在,当我将复选框image1从panelleft拖放到panel_right时,我希望在用户的拖放操作的后台运行某些代码

for(ResourceListObject currentImage : imageList ){


        imageOnRepositoryCheckBox[checkBoxNumber] = new JCheckBox(currentImage.getName());
        imageOnRepositoryCheckBox[checkBoxNumber].setBounds(6, gapping+checkBoxNumber*26, 368, 23);
        imageOnRepositoryCheckBox[checkBoxNumber].setTransferHandler(new FromTransferHandler());
        if(imagesToBeImported != null){
            if(imagesToBeImported.contains(currentImage)){

                imageOnRepositoryCheckBox[checkBoxNumber].setForeground(Color.GRAY);
                imageOnRepositoryCheckBox[checkBoxNumber].setToolTipText("This image is already on the list of images to be imported and can't be selected again.");

            }
        }
            panel.add(imageOnRepositoryCheckBox[checkBoxNumber]);
            checkBoxNumber++;

    }
第二段代码是

 for(JCheckBox currentCheckBox : imageOnRepositoryCheckBox){
                if(currentCheckBox.isSelected()){
                    Iterator itr = imagesOfCurrentRepository.iterator();
                    while(itr.hasNext()) {
                        ResourceListObject iteratedImage = (ResourceListObject)itr.next();
                        if(iteratedImage.getName().equals(currentCheckBox.getText())){

                           boolean isAdded = imagesToBeImported.add(iteratedImage);
                           descriptionPanel.updateDescription("The image selected for importing is "+currentCheckBox.getText());

                           if(isAdded){
                               currentCheckBox.setForeground(Color.GRAY);
                               currentCheckBox.setToolTipText("This image is already on the list of images to be imported and can't be selected again.");
                           }
                        }

                    }

                    updateImagesToBeImportedPanel(panel_1, imagesToBeImported);
                }
                checkBoxNumber++;
             }

因此,我希望用户将其视为拖放,但在后端,我会做自己的事情。

也许您可以正常执行拖放,然后在拖放时确保初始状态恢复/不变。无论如何,这太模糊了,做一个简单的可运行代码,做一些测试,并与它分享你的问题。你的意思是说我必须使用拖放API,在我们编写执行拖放操作时会发生什么的方法中,我把我的代码放进去,不管我想做什么??好的,我会在几分钟后发布。是的,但这只是随机的。尝试使用您自己的可自定义代码实现一个简单的拖放应用程序,并发布您必须从该方法转移到目标的任何问题。您可以使用一个玻璃窗格来伪造它,在拖动复选框时绘制复选框,然后隐藏玻璃窗格。但是,我不确定您想要完成什么,或者为什么希望用户拖动复选框。在我看来有更好的办法。