所以说我有一个 Jpanel(容器),里面有 3 个 Jpanel,它们在一个 JPanel ArrayList 中。现在我希望能够确定鼠标在哪个面板中被按下,以及鼠标在哪个面板中被释放。这样我可以重新排列数组列表中的面板,并以新的顺序将它们添加回容器中。
我目前有可用于交换的代码,但问题是确定正在交换哪些面板。我现在在内部面板上有一个动作监听器,当按下时,容器中的 startIndex 设置为该索引,并且在释放鼠标时分配 endIndex。
@Override
public void mousePressed(MouseEvent e) {
con.startIndex = (this);
}
@Override
public void mouseReleased(MouseEvent e) {
con.endIndex = (this);
con.swap();
}
但它总是试图与按下鼠标的同一个面板交换。有人有什么想法吗?
public void swap() {
//This swap code works for the two numbers it's given
System.out.println("start swapping");
System.out.println(startSwapIndex + " with " + endSwapIndex);
if(startSwapIndex != endSwapIndex){
SpecPanel start = this.getSpecPanel(startSwapIndex);
SpecPanel end = this.getSpecPanel(endSwapIndex);
panels.set(endSwapIndex, start);
panels.set(startSwapIndex, end);
removeAllSpecPanels();
addAllSpecPanels();
System.out.println("swap complete");
}
}
谢谢。