2013-01-10 67 views
1

我是Swing中的新人。我有要求使用swing執行拖放操作。在當前幀中包含不同的面板,即中央面板& LeftPanel有子面板,即控制面板,屬性面板。我試圖將標籤/ jbuttons /圖像從控制面板拖放到中央面板。這些面板使用BorderLayout使用擺動在兩個面板之間拖放?

enter image description here

我試着拖放鼠標事件。我把鼠標列表放在控制面板上。當我丟棄標籤/圖像爲中心panel.It讀取-X &ŸCooridnates和檢查代碼

private void mak_lis(final SLabel l) { 
    l.addMouseListener(new MouseAdapter() { 
    public void mousePressed(MouseEvent m) { 
     System.out.println("mak_lis Mouse mousePressed"); 

    setCursor(yd); 
    // l.setBorder(new MatteBorder(1,1,1,1,Color.black)); 

    } 
    public void mouseReleased(MouseEvent m) { 
     l.setBorder(null); 
     setCursor(dc); 
     System.out.println("mak_lis Mouse mouseReleased"); 
     int x = -(m.getX() + l.getX() - leftPanel.getX()); 
     int y = m.getY() + l.getY() + leftPanel.getY(); 
     System.out.println("mak_lis Mouse mouseReleased" + "x" + x+ "y" + y); 
     if (y > 0 && x > 0 && y < leftPanel.getHeight() && x < leftPanel.getWidth()) { 
     leftPanel.add(new_lab(l, x, y)); 
       leftPanel.repaint(); 
     Component[] components1 = leftPanel.getComponents(); 
     Component component = null; 
     for (int i = 0; i < components1.length; i++) { 
      // System.out.println("components iii"+ components1[i]); 
     component = components1[i]; 

      } 

    } 
} 

}); 
} 

請告訴我,有沒有在這裏失蹤。實現拖放功能的最佳方法是什麼?

+0

*「我正在使用swing實現設計器工具。」*一位不知名的GUI設計師? (不寒而慄)已經有太多的GUI程序員需要稍後修復這些問題。 –

+1

@AndrewThompson我會說有太多的程序員創建問題,他們不明白的工具;) – MadProgrammer

+0

可能的重複[如何設置優先鼠標偵聽器](http://stackoverflow.com/questions/14273923/我怎麼能設置優先鼠標偵聽器) –

回答

4
+0

作爲我的需求,我沒有任何JCompenent在放置面板。所以我怎麼能把JCompnent放到這個面板中。請問如何處理這些scenerio? – tech2504

+0

你不能。爲了能夠接收鼠標事件,您必須在屏幕上顯示一個連接到本地對等體的活動組件,這就是Swing/Java的工作原理。如果不是某種組件,您如何期望能夠在屏幕上「繪製」某些內容? – MadProgrammer

+1

+1另請參閱我的[方法](http://stackoverflow.com/a/14276466/1133011),其中顯示瞭如何在JPanel之間拖放JComponents等擺動組件 –