כפי שציינתי, אני מצמיד לכל הפאנלים ליסנר שהכנתי
זהו המימוש של הליסנר:
public class PanelsDrag extends MouseMotionAdapter { @Override public void mouseDragged(MouseEvent me) { for (int i = 0; i < 30; i++) { if (me.getSource() == panels[i]) { panels[i].setLocation(panels[i].getX() + me.getX() - panels[i].getWidth() / 2, panels[i].getY() +me.getY() - panels[i].getHeight() / 2); } } }
|
ההצמדה נעשית בלולאת פור עד 30, כאשר כל פאנל מקבל:
panels[size].addMouseMotionListener(panelsDrag);
|
הבעיה שאם אני גורר פאנל מעל פאנל, הוא תמיד שם מעל את הפאנל שהוצמד
ראשון לליסנר, ומתחת את הפאנל שהוצמד אחרי.
לדוגמא, אם אני גורר את הפאנל 0 (שהוצמד ראשון) מעל הפאנלים האחרים, אז
הוא באמת מראה אותם מעליהם, לעומת זאת, אם אני גורר את פאנל 29 (האחרון), אז אם אני גורר אותו מעל הפאנלים האחרים- הוא מציג אותו מתחתם.
איך אני אמור לטפל בדבר כזה?
תודהההה