2013-05-12 3 views
0

자바 드래그 앤 드롭 작업을 시도하고 있습니다. 액션은 이미지에 대한 경로를 동원하여 작동하지만, 나중에 레이블을 그려 넣으려고하지만 플롯되지 않았습니까? 누군가 도움을받을 수 있습니까?자바 드래그 앤 드롭이 작동하지 않습니다.

class MyDragDropListener implements DropTargetListener { 

    public void drop(DropTargetDropEvent event) { 

     // Accept copy drops 
     event.acceptDrop(DnDConstants.ACTION_COPY); 

     // Get the transfer which can provide the dropped item data 
     Transferable transferable = event.getTransferable(); 

     // Get the data formats of the dropped item 
     DataFlavor[] flavors = transferable.getTransferDataFlavors(); 

     // Loop through the flavors 
     for (DataFlavor flavor : flavors) { 

      try { 

       // If the drop items are files 
       if (flavor.isFlavorJavaFileListType()) { 


        //  List files = (List) transferable.getTransferData(flavor); 

        Object f = transferable.getTransferData(flavor); 
        // Loop them through 
        // for (File file : files) { 

        // Print out the file path 
//      System.out.println("File path is '" + f.getPath() + "'."); 

        String cesta = f.toString(); 
        String typ = ""; 
        String cesta2 = ""; 
        for (int i = 1; i < cesta.length() - 1; i++) { 
         if (cesta.charAt(i) == '\\') { 
          cesta2 = cesta2 + '/'; 
         } else { 
          cesta2 = cesta2 + cesta.charAt(i); 
         } 
        } 
        for (int i = cesta2.length() - 1; i > 0; i--) { 
         if (cesta2.charAt(i) == '.') { 
          break; 
         } 
         typ = typ + cesta2.charAt(i); 

        } 
        typ = new StringBuilder(typ).reverse().toString().toLowerCase(); 


        MojeOkno mo = new MojeOkno(); 
        // Inform that the drop is complete 
        mo.VlozObrazekDoLabelu(cesta2); 
        System.out.println("METODA PROBEHLA"); 

       } 

      } catch (Exception e) { 

       // Print out the error stack 
       e.printStackTrace(); 

      } 
     } 

     event.dropComplete(true); 

    } 

    public void dragEnter(DropTargetDragEvent event) { 
    } 

    public void dragExit(DropTargetEvent event) { 
    } 

    public void dragOver(DropTargetDragEvent event) { 
    } 

    public void dropActionChanged(DropTargetDragEvent event) { 
    } 
} 



public void VlozObrazekDoLabelu(String Mojecesta) { 

     System.out.println("Cesta k obrazku: " + Mojecesta); 

     try { 

      img = ImageIO.read(new File(Mojecesta)); 


      Graphics2D g = (Graphics2D) PanelProObrazek_jPanel1.getGraphics(); 
      g.drawImage(img, 3, 3, PanelProObrazek_jPanel1.getWidth() - 6, PanelProObrazek_jPanel1.getHeight() - 6, this); 
      System.out.println("Dostal jsem se do try"); 

     } catch (Exception e) { 
      System.out.println("CHYBA"); 

     } 

    } 

Greetings from Czech Republic.

+0

안녕하세요. 중국에서. 1. [SSCCE] (http://sscce.org/)를 게시하십시오. 2. 영어로 당신의 방법, 매개 변수를 지명하십시오. 해답에 圖 圖像 转换 成标 傑 또는 檔案 路徑을보고 싶지는 않을 것입니다. – johnchen902

+0

SSCCE 란 무엇입니까? 그것은 작동하지 않는다, 나는 당신을 위해 간단한 예 (영어 코멘트와 함께)를 만들었습니다. 전체 자바 파일을 다운로드하려면 다음 링크를 클릭하십시오. [link] (https://mega.co.nz/#!4M4CxS7B!-u6OwiNT3Cw8c8Wk5QFhBF1xs44Mz74i2kXe6Hu5ho) – JaLe29

답변

1

문제는 당신은 새로운 MojeOkno을 만들어

// CESTA2 == PATH TO IMG 
MojeOkno mo = new MojeOkno(); 
mo.InserImgToPanel(cesta2); 

MyDragDropListener.drop(DropTargetDropEvent event)에, 그 이유를 늘 작품이다입니다. 몇 가지 사항을 변경하십시오.

// 1. method Callmeafterstart 
MyDragDropListener myDragDropListener = new MyDragDropListener(this); 

// 2. class MyDragDropListener 
private MojeOkno mojeOkno; 
public MyDragDropListener(MojeOkno mojeOkno) { 
    this.mojeOkno = mojeOkno; 
} 

// 3. method drop 
// CESTA2 == PATH TO IMG 
mojeOkno.InserImgToPanel(cesta2); 
+0

정말 환상적입니다. 중국에서 :-) :-P – JaLe29

+0

@ user2374452 이미지가 표시된 후 창 크기를 조정하십시오. 완벽하지 않다는 것을 알게 될 것입니다. – johnchen902

관련 문제