2014-02-26 93 views
0

我想通過setDraggable將我的自定義小部件製作爲可拖動。CodeName One中的可拖拽&可調整大小的容器

第1部分: 我的目標是創建一個包含其他組件(中心)的標題(北)的矩形容器。 如果我拖動標題,MyWidget應該被拖動。

public class MyWidget extends Container { 

    public MyWidget(String labelText) { 

     // Temp size. This will be removed after actual components 
     // are put into innerContainer 
     setPreferredH(100); 
     setPreferredW(400); 

     setLayout(new BorderLayout()); 

     Label title = new Label(labelText); 
     addComponent(BorderLayout.NORTH, title); 

     Container innerContainer = new Container(); 

     addComponent(BorderLayout.CENTER, innerContainer); 
    } 

} 

Container myWidget = new MyWidget("MyWidget"); 
myWidget.setDraggable(true); 

setDraggable()效果很好,當我用了一個標籤,但我不能當我申請同樣的方法進myWidget拖動。

第2部分: 此外,普萊舍建議我怎麼能長按這個小工具可以調整大小。我的目標是在按長按&時爲容器提供可調整大小的指標邊緣,小工具進入調整大小模式。然後我通過拖動邊緣來調整組件大小。如果我在MyWidget外單擊,調整大小模式將結束。

PS:我注意到拖動正在發生'有時',當我點擊小部件的角落。

回答

1

您正試圖拖動抓住拖動事件的單個組件。我建議嘗試類似:

setLeadComponent(title); 

這整個層次將有效地轉換成一起改變狀態,並可作爲一個單一的統一組件。

此:

setPreferredH(100); 
setPreferredW(400); 

是一個錯誤,如果你這樣做,你不應該使用setPreferred但是正常,所以你應該總是使用:

setPreferredSize(new Dimension(400, 100)); 
+0

感謝您的幫助。 **第1部分:**解決方案使'title'接收所有事件。任何'innerContainer'組件(例如,一個'Button')都將無法接收事件。 請指導** **第2部分**。我是CN1的新寵兒。 –

+1

覆蓋長按和標籤中拖動的指針(您可能需要使其可調焦)。當長按發生時激活一個模式,從而拖動指針將調整大小而不調用超級。 –

相關問題