• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 914
  • Last Modified:

moving a object (Java)

Hi all

Im new and learning java , what i'm struggling with is moving a object on mouse movement ,my thinking and trying to do :  if no object is at reference appX / appY then great a new GRect .
If after its been created its there don't create it again but move it. i have added a label just to show me how its being executed and the execution is all good but not moving the GRect.

Help appreciated....

the code i have created :-

      public void  mouseMoved(MouseEvent e){
                  int appX = (APPLICATION_WIDTH / 2) - (BAT_WIDTH / 2) ;
                  int appY = APPLICATION_HEIGHT - (BAT_HEIGHT * 2);
            
                  GRect bat = new GRect (appX ,appY ,BAT_WIDTH,BAT_HEIGHT);
                  bat.setFillColor(Color.red);
                  bat.setColor(Color.red);
                  bat.setFilled(true);
            
            
            if ( getElementAt(appX,appY) == null){
                  add(bat) ;
                  
                  GLabel gg = new GLabel ("Null",50,60) ;
                  add (gg);
            } else {
                  bat.move(e.getX(),appY) ;
                  
                  GLabel gg = new GLabel ("Not Null",60,70) ;
                  add (gg);
                }
}
0
markavo
Asked:
markavo
  • 2
  • 2
1 Solution
 
Kevin CrossChief Technology OfficerCommented:
I believe this is a scope issue.  The bat is a local variable, so each time you run the mouse event you are creating a new instance, so if you issue the command move() you are moving the new one that is not the same one you added previously.  Additionally, once you start to get this working to move the first time, bat will no longer be at appX, appY; therefore, I would reconsider how you are looking that up.

In other words, check code getElementAt(appX, appY) for correct logic once get past this first issue.
0
 
markavoAuthor Commented:
Hi

Thank you , Do you have any code recommendations i can learn from , for the issues but i know what you are saying.
0
 
Kevin CrossChief Technology OfficerCommented:
Aside from moving the bat object to an instance variable (class scope), I would recommend following examples of the MouseListener tutorials:
http://download.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
You may already have that information, but just in case.
0
 
markavoAuthor Commented:
HI

Thank you ... I have learnt so much i must have spent 10 -15 hours getting things wrong but it then fell into place thank you..

The code i came up with is :-

private static final int CANVAS_Y_BAT_START = APPLICATION_HEIGHT - (BAT_HEIGHT * 2);//fixed height position for bat

private static final int CANVAS_X_BAT_START = (APPLICATION_WIDTH / 2) - (BAT_WIDTH / 2);//fixed width position for bat
      
      public void init () {
            addMouseListeners() ;// listen for mouse
            addKeyListeners() ;// listen for keys
      }

public void run() {
    bat(CANVAS_X_BAT_START,CANVAS_Y_BAT_START); // add object GRect
}

      public void mouseMoved(MouseEvent e){
                  
      public void mouseMoved(MouseEvent e){
                  
                        for (int x =1 ;x<=APPLICATION_WIDTH ;x++){ //scan bottom of canvas
                              
                              if (getElementAt( x ,CANVAS_Y_BAT_START) !=null )//check if object there - bottom of canvas
                              {
                                    GObject bat1 = getElementAt(x,CANVAS_Y_BAT_START);//assign object to bat1
                                    bat1.setLocation (e.getX(), CANVAS_Y_BAT_START) ;// move object to mouse pointer possition
                              }
                        }      
            

      //Create a bat
      public void bat (int x , int y){
            GRect bat = new GRect (x, y,BAT_WIDTH,BAT_HEIGHT);
            bat.setColor(Color.RED); bat.setFillColor(Color.RED);bat.setFilled(true) ;
            add (bat);
      }
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now