Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Norbs en 22 Noviembre 2008, 16:30 pm



Título: CERRADO
Publicado por: Norbs en 22 Noviembre 2008, 16:30 pm
cerradooo


Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: joseprox en 23 Noviembre 2008, 02:08 am
Mi vale.....dos cosas......

primero...no trabajes y nunca lo hagas......TRABAJAR DIBUJOS GRAFICOS CON JAVAX.SWING........este paquete no soporta el paint y repaint...debes haccerlo con el paquete de la AWT....

segundo.....te cambié el codigo.....se mueve el cubo.....mientras muevas el mouse........cuando pikes en algun lado.....(en esa posicion se queda un cuadro..).

chequeate el codigo espero te sirva......


package Cubo;

 import java.awt.*;
 import java.util.*;
 import java.awt.event.*;
 import javax.swing.*;
 
public class Cubo extends Frame implements MouseMotionListener, MouseListener
{
  int x=100,y=400,width=90,height=90,ancho=10,alto=10,ban=0;
  int m=0,b=0;
  Point punto = new Point();
 
  TextField jt = new TextField();
  Panel paneldelCuadro = new Panel();
  Panel panelGeneral = new Panel();
 
  GraficaPanel graficapanel = new GraficaPanel();
   
    int enX = 0;
    int enY = 0;
   
    public Cubo(){   
       
       
        setLayout(new BorderLayout (50,20));
         
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
       enX = (int)d.getWidth();
       enY = (int)d.getHeight();
       
       
       
        jt.setFont(new Font("ARIAL",1,14));
        jt.setBounds(10,10,(enX-30),30);
       jt.setPreferredSize(new Dimension(20,30));
       
       add(jt,BorderLayout.NORTH);
       
       graficapanel.addMouseMotionListener(this);
       graficapanel.addMouseListener(this);
       
       
       add(graficapanel,BorderLayout.CENTER);
       add(new JLabel(""),BorderLayout.EAST);
       add(new JLabel(""),BorderLayout.WEST);
       add(new JLabel(""),BorderLayout.SOUTH);
       
       //this.setMinimumSize(new Dimension(400,50));
       setSize(enX,enY-30);
        show();
       addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent we){
           System.exit(0);
        }
     });
         
    }
   
   
   
   
    public void mouseReleased(MouseEvent e){
          System.out.println ("click en ");
       }
 
    public void mouseDragged(MouseEvent e)
    {         
       /*if( e.getX()>55&&e.getX()<530 && e.getY()>55&&e.getY()<500)
         setLocation((int)(e.getX()-punto.x),(int)(e.getY()-punto.y)); */
         
           
    }   
   
    public void mousePressed(MouseEvent e){
   
       graficapanel.guardarenVector();
   
    }
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}   
    public void mouseClicked(MouseEvent e){}
    public void mouseMoved(MouseEvent e){
     
     jt.setText("enX = "+e.getX() +" - "+"enY = "+e.getY());
     
     //graficapanel.EstablecerPuntos(0,0,0,0);
     graficapanel.EstablecerPuntos(e.getX(),e.getY(),50,50);
     //repaint();
    }
   
    /* public void paint(Graphics g){
       graficapanel.mostrar(g);
    }*/
   
    public static void main(String ars[]){
     new Cubo();
     
    }
     
}
 
 class GraficaPanel extends Panel {
    
    int x = 0;
    int y = 0;
    int x1 = 0;
    int y1 = 0;
    
    boolean activada;
    
    Graphics gr;
    
    //este vector guardara un cuadro cada ves que se dé un
    //click en el panes
    Vector vector = new Vector();
    
    public GraficaPanel(){
       
       //this.setBackground(Color.CYAN);
       
       }
    
    public void EstablecerPuntos(int xIni,int yIni,int x1Ini,int y1Ini){
       x = xIni;
       y = yIni;
       x1 = x1Ini;
       y1 = y1Ini;
       
       
       repaint();
    }
    
    public void guardarenVector(){
       activada = true;
       Datos datos = new Datos(x-(x1/2),y-(y1/2),x1,y1);
       vector.addElement(datos);
       //repaint();
    }
   
    public void mostrar(Graphics g){
          
    }   
    
    public void paint(Graphics g){
       
        int X = (getWidth()/2)-5;
        int Y = (getHeight()/2)-5;
       
       g.setColor(Color.BLACK);
        g.drawRect(x-(x1/2),y-(y1/2),x1,y1);
        gr = g;
       
        g.setColor(Color.BLACK);
        g.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);
       
        g.setColor(Color.BLUE);
        g.fillOval(x-(x1/2),y-(y1/2),x1,y1);
       
        //g.fillRect(x,y,x1,y1);
        //g.drawRect(10,10,100,100);
        for(int i=0;i<vector.size();i++){
          Datos datos = (Datos)vector.get(i);
          System.out.println (datos.x);
          g.drawRect(datos.x,datos.y,datos.x1,datos.y1);
          g.fillOval(datos.x,datos.y,datos.x1,datos.y1);   
        }
       
    }
    
 }
 
 class Datos{
    
    int x = 0;
    int y = 0;
    int x1 = 0;
    int y1 = 0;
    Graphics g;
    
    public Datos(int xIni,int yIni,int x1Ini,int y1Ini){
       x = xIni;
       y = yIni;
       x1 = x1Ini;
       y1 = y1Ini;
       
    }
 }
 




Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: juancho77 en 23 Noviembre 2008, 08:38 am
De hecho si puedes el JPanel y el JFrame como dibujos aprovechando el Paint y Repaint. Solo debes incluir el import para el AWT tanto como para el Swing.
Recordar que JPanel deriva de Panel.


Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: joseprox en 23 Noviembre 2008, 20:59 pm
JUANCHO77......espero....que no os ofenda....
pero me parece...que la java.awt se hizo para soportar el paint() y repaint....

apesar de que la Javax.swing....es un paquete que tiene la mayoria de sus componentes extendidos de la AWT.....esta no soporta muy los componentes de dibujo.....simplemente por que fue crear para aplicaciones de escritorio......en vista que el modelo de awt se notaba muy rustico......o machucado....

te digo si querés, usar los compentes de dibujo.....te recomiendo que hagas un clase que extienda de Canvas para su aplicacion y funcion en sswing......

os dejo la duda......siga usando paint y  repaint en una aplicacion de javax.swing.....


Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: juancho77 en 23 Noviembre 2008, 22:27 pm
No digo que una o otra sea mas efectiva porque no me dedico a interfaces graficas. Solo decia que sigue siendo posible utilizar Paint() y repaint() en las componentes de javax.swing ya que son basicamente una extension del AWT. Sin embargo, me parece que no te expresas bien o estas confundido en algo: esos metodos paint y repaint que dices son usados siempre por todos los elementos para dibujarse en pantalla.
La invocacion
Código
  1. JButton boton= new JButton("kaka");
es una llamada que incluye al paint del frame o del panel para dibujar el boton en pantalla.

Saludos.


Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: egyware en 24 Noviembre 2008, 13:58 pm
Que estan discutiendo
la cosa era mover un cubo
ademas si quieres usar algo solo debes importar las clases
necesarias.
si quieres usar el paint o repaint o update se puede tanto como awt y swing, solo necesitas ademas importar Graphics y porsia caso Color y remodificar esos metodos
yo recomiendo usar el JPanel y modificarles el paint y el update ya que el Canvas me a desilusionado con al momento de cambiarle tamaño y en compatibilidad con swing.


Título: Re: MOVER UN CUBO EN JAVA =S
Publicado por: Norbs en 26 Noviembre 2008, 13:50 pm
 gracias hermano!!  ::)