Foros del Web » Programación para mayores de 30 ;) » Java »

Mover varios objetos en java

Estas en el tema de Mover varios objetos en java en el foro de Java en Foros del Web. Tengo el sigueinte código; para mover una bola algo como drag-drop con el raton, pero como hago para añidir nuevoss objetos, y por lo tanto, ...
  #1 (permalink)  
Antiguo 06/09/2010, 00:31
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Mover varios objetos en java

Tengo el sigueinte código; para mover una bola algo como drag-drop con el raton, pero como hago para añidir nuevoss objetos, y por lo tanto, verificar cuantos objetos hay en determinada coordenada? oe sta mas completo en la sigte pagina...
http://leepoint.net/notes-java/examples/mouse/20dragdemo.html
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/////////////////////////////////////////////////////////// class DragBallPnael
/** When the mousePressed listener is called to position is tested
to see if it's in the area of the ball. If it is,
(1) _canDrag is set true meaning pay attention to the MouseDragged events.
(2) Record where in the ball (relative to the upper left coordinates)
the mouse was clicked, because it looks best if we drag from there.
*/
public class DragBallPanel extends JPanel implements MouseListener, MouseMotionListener {

private static final int BALL_DIAMETER = 40; // Diameter of ball
//--- instance variables
/** Ball coords. Changed by mouse listeners. Used by paintComponent. */
private int _ballX = 50; // x coord - set from drag
private int _ballY = 50; // y coord - set from drag

/** Position in ball of mouse press to make dragging look better. */
private int _dragFromX = 0; // pressed this far inside ball's
private int _dragFromY = 0; // bounding box.

/** true means mouse was pressed in ball and still in panel.*/
private boolean _canDrag = false;

//================================================== =========== constructor
/** Constructor sets size, colors, and adds mouse listeners.*/
public DragBallPanel() {
setPreferredSize(new Dimension(300, 300));
setBackground(Color.blue);
setForeground(Color.black);
//--- Add the mouse listeners.
this.addMouseListener(this);
this.addMouseMotionListener(this);
}//endconstructor

//================================================== = method paintComponent
/** Ball is drawn at the last recorded mouse listener coordinates. */
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // Required for background.
g.fillOval(_ballX, _ballY, BALL_DIAMETER, BALL_DIAMETER);


}//end paintComponent

//================================================== === method mousePressed
/** Set _canDrag if the click is in the ball (or in the bounding
box, which is lazy, but close enuf for this program).
Remember displacement (dragFromX and Y) in the ball
to use as relative point to display while dragging.
*/
public void mousePressed(MouseEvent e) {
int x = e.getX(); // Save the x coord of the click
int y = e.getY(); // Save the y coord of the click

if (x >= _ballX && x <= (_ballX + BALL_DIAMETER)
&& y >= _ballY && y <= (_ballY + BALL_DIAMETER)) {
_canDrag = true;
_dragFromX = x - _ballX; // how far from left
_dragFromY = y - _ballY; // how far from top
} else {
_canDrag = false;
}
}//end mousePressed

//================================================== ========== mouseDragged
/** Set x,y to mouse position and repaint. */
public void mouseDragged(MouseEvent e) {
if (_canDrag) { // True only if button was pressed inside ball.
//--- Ball pos from mouse and original click displacement
_ballX = e.getX() - _dragFromX;
_ballY = e.getY() - _dragFromY;

//--- Don't move the ball off the screen sides
_ballX = Math.max(_ballX, 0);
_ballX = Math.min(_ballX, getWidth() - BALL_DIAMETER);

//--- Don't move the ball off top or bottom
_ballY = Math.max(_ballY, 0);
_ballY = Math.min(_ballY, getHeight() - BALL_DIAMETER);

this.repaint(); // Repaint because position changed.
}
}//end mouseDragged

//================================================== ==== method mouseExited
/** Turn off dragging if mouse exits panel. */
public void mouseExited(MouseEvent e) {
_canDrag = false;
}//end mouseExited

//=============================================== Ignore other mouse events.
public void mouseMoved (MouseEvent e) {} // ignore these events
public void mouseEntered (MouseEvent e) {} // ignore these events
public void mouseClicked (MouseEvent e) {} // ignore these events
public void mouseReleased(MouseEvent e) {} // ignore these events
}//endclass DragBallPnael
  #2 (permalink)  
Antiguo 06/09/2010, 03:30
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Mover varios objetos en java

Dime una cosa, tu entiendes el código que has puesto tal cual? En otra ocasión, por favor, usa un "Highlight" para poder ver el código con mayor claridad. Así poca gente querrá ayudarte y, por tanto, reduces las posibilidades de que te respondan. Cuida tu pregunta para garantizar una respuesta.

Sobre tu pregunta, créate un array de objetos (usa, por ejemplo, algo como ArrayList para que dicho array sea dinámico) y, antes de añadirlos a la pantalla, añadelos al array. De este modo tendrás todos los objetos de la pantalla mapeados. Si únicamente quieres saber el número (cantidad) de objetos que tienes, en vez de un array, usa una variable int donde al añadir un objeto la incrementes en uno y al eliminarlo, la decrementes.

Saludos
Carlos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM
  #3 (permalink)  
Antiguo 07/09/2010, 23:44
 
Fecha de Ingreso: junio-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Mover varios objetos en java

Muchas gracias..pero como hago para ponerlos en la pantalla?. Es que como usted ve cada submetodo tiene diferentes funciones como dibujar un panel y dibujar los objetos y las acciones del ratón...me estoy iniciando un poco en java así disculpeme las incuerencias y cualquier incongruecia, ya que es para un proyecto de mi colegio...gracias!

Última edición por raulpampillo; 07/09/2010 a las 23:45 Razón: HTML

Etiquetas: canvas, drag, drop, frame, objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.