如何再次将组件从 DragAndDropWrapper 中取出
How to get the component out of the DragAndDropWrapper again
我在关注 this guide in order to achieve a solution for my drag and drop scenario. Basically I've an component (Slider) wrapped in a "DragAndDropWrapper”。这很有效。
final Slider slider = new Slider(title);
slider.setValue(1.0);
slider.setWidth("100%");
slider.setMax(4);
slider.addStyleName("ticks");
final DragAndDropWrapper sliderWrap = new DragAndDropWrapper(slider);
sliderWrap.setDragStartMode(DragStartMode.COMPONENT);
sliderWrap.setSizeUndefined();
((AbstractOrderedLayout) this.getContent()).addComponent(sliderWrap);
好吧,为简化起见,我们假设我们有一个 button wrapped in such a DragAndDropWrapper。
final Button button = new Button("An Absolute Button");
final DragAndDropWrapper buttonWrap = new DragAndDropWrapper(button);
buttonWrap.setDragStartMode(DragStartMode.COMPONENT);
我应该如何再次将按钮从那里取出来?我正在寻找这样的东西:
Button myButton = buttonWrap.getComponent(0);
API 没有说明任何可用于这样做的方法(AFAIK)。
使用getCompositionRoot method。不幸的是,此方法受到保护,因此您需要扩展 DragAndDropWrapper 并更改方法可见性。示例:
public class MyDragAndDropWrapper extends DragAndDropWrapper
{
public MyDragAndDropWrapper(Grid grid)
{
super(grid);
}
@Override
public Component getCompositionRoot(){
return super.getCompositionRoot();
}
}
//...later on
Grid grid = new Grid(container);
grid.setId("fancyId");
MyDragAndDropWrapper w = new MyDragAndDropWrapper(grid);
System.out.println(w.getCompositionRoot().getId());
layout.addComponent(w);
请记住,您始终可以在上面的代码中将变量 w
声明为原始 DragAndDropWrapper
并通过转换访问 getCompositionRoot
。
我在关注 this guide in order to achieve a solution for my drag and drop scenario. Basically I've an component (Slider) wrapped in a "DragAndDropWrapper”。这很有效。
final Slider slider = new Slider(title);
slider.setValue(1.0);
slider.setWidth("100%");
slider.setMax(4);
slider.addStyleName("ticks");
final DragAndDropWrapper sliderWrap = new DragAndDropWrapper(slider);
sliderWrap.setDragStartMode(DragStartMode.COMPONENT);
sliderWrap.setSizeUndefined();
((AbstractOrderedLayout) this.getContent()).addComponent(sliderWrap);
好吧,为简化起见,我们假设我们有一个 button wrapped in such a DragAndDropWrapper。
final Button button = new Button("An Absolute Button");
final DragAndDropWrapper buttonWrap = new DragAndDropWrapper(button);
buttonWrap.setDragStartMode(DragStartMode.COMPONENT);
我应该如何再次将按钮从那里取出来?我正在寻找这样的东西:
Button myButton = buttonWrap.getComponent(0);
API 没有说明任何可用于这样做的方法(AFAIK)。
使用getCompositionRoot method。不幸的是,此方法受到保护,因此您需要扩展 DragAndDropWrapper 并更改方法可见性。示例:
public class MyDragAndDropWrapper extends DragAndDropWrapper
{
public MyDragAndDropWrapper(Grid grid)
{
super(grid);
}
@Override
public Component getCompositionRoot(){
return super.getCompositionRoot();
}
}
//...later on
Grid grid = new Grid(container);
grid.setId("fancyId");
MyDragAndDropWrapper w = new MyDragAndDropWrapper(grid);
System.out.println(w.getCompositionRoot().getId());
layout.addComponent(w);
请记住,您始终可以在上面的代码中将变量 w
声明为原始 DragAndDropWrapper
并通过转换访问 getCompositionRoot
。