我不确定有什么问题,所以我会尝试解释它,你可以在下面的例子中测试它:
该项目(3 MB):http://ryannaddy.com/downloads/dist.zip
最后,我想将这些标签拖到任何位置,它会放置标签。
释放鼠标以组织标签后执行的代码块:
public void lblMouseReleased(MouseEvent evt){
if(dragging){
int componentCount = layers.getComponentCount() - 1;
LayerItem[] comps = new LayerItem[componentCount];
FocusTraversalPolicy focus = layers.getFocusTraversalPolicy();
Component comp = focus.getFirstComponent(layers);
for(int i = 0; i < componentCount; i++){
Component newComp = focus.getComponentAfter(layers, comp);
comp = newComp;
comps[i] = (LayerItem)newComp;
System.out.println(comps[i].layerID);
}
Layers.rebuild(layers, comps);
}
dragging = false;
}
Layers.rebuild 的代码:
public static void rebuild(JPanel layers, Component[] list){
for(int i = 0; i < list.length; i++){
layers.remove(list[i]);
}
for(int i = 0; i < list.length; i++){
list[i].setBounds(0, i * 50 + 30, 198, 50);
layers.add(list[i]);
}
layers.revalidate();
layers.repaint();
}
这应该是问题的所有相关代码,如果您需要更多,请告诉我。
答案 0 :(得分:0)
我明白了!我是因为我没有得到面板中所需的所有物品。我面板中的第一项是焦点设置为false的标题,因为它不是分组的一部分,所以我告诉我的代码只能订购1+项时应该是0 +