0

ユーザーが CheckBox をドラッグして、あるパネルから別のパネルに貼り付けようとするたびに、何かをする必要があります。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++;

    }

実行される 2 番目のコードは、

 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++;
             }

したがって、ユーザーにはドラッグアンドドロップと考えてもらいたいのですが、バックエンドでは自分のことをやっています。

4

0 に答える 0