2016-03-09 2 views
0

Я хочу в основном выбрать объект на кадре, а затем перетащить его, и объект перемещается с помощью мыши. По какой-то причине я не могу заставить его работать.Java - выбор и перемещение объекта

Вот мой код нажимается метод:

public void mousePressed(MouseEvent event) 
{ 
    //Get x and y 
    int x = event.getX(); 
    int y = event.getY(); 
    //set selected to null 
    selected = null; 
    //if a fruit contains x, y then selected is assigned that fruit 
    for(Fruit m : fruits) 
     { 
     if(m.contains(x,y)) 
      { 
      selected.setXY(x,y); 
      } 
     } 

Это мой метод перетаскивания:

public void mouseDragged(MouseEvent event) 
{ 
    //if selected not equal null 
    if(selected != null){ 
     //get x and y 
     int x = event.getX(); 
     int y = event.getY(); 
     //make select follow the mouse and repaint 
     selected.setXY(x,y); 
     repaint(); 
    } 
    } 

Если вам нужно больше моего кода, пожалуйста, дайте мне знать, и я буду редактировать этот вопрос и добавьте его.

Любая помощь приветствуется

+0

Вы устанавливаете значение «null», а затем пытаетесь вызвать его метод 'setXY'. Не будет ли он поднимать' NullPointerException'? – RafaelC

ответ

1

Поскольку вы установили Selected обнулить он не может работать.

Что произойдет, если изменить mousePressed к (заметим, что она будет работать только тогда, когда есть только один фрукт в (х, у):

public void mousePressed(MouseEvent event) 
{ 
    //Get x and y 
    int x = event.getX(); 
    int y = event.getY(); 
    //set selected to null 
    selected = null; 
    //if a fruit contains x, y then selected is assigned that fruit 
    for(Fruit m : fruits) 
    { 
     if(m.contains(x,y)) 
     { 
     selected = m; 
     // position is set in mouseDrag 
     } 
    } 

В mouseReleased вы затем установите выбранный обратно в нуль (по желанию)

+0

У меня есть несколько фреймов на фрейме, как бы сбросить один фрукт, а затем перетащить еще один фрукт на том же фрейме –

+0

Пока у вас не более одного фрукта в положении щелчка, он работает. Если вас больше, чем один, вы перетащит один из плодов (последний, содержащий х, у). – Burkhard

+0

по какой-то причине его единственный движущийся один плод и он один и тот же каждый раз –

Смежные вопросы