CERRADO

Iniciado por Norbs, 22 Noviembre 2008, 16:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Norbs

cerradooo

joseprox

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;
       
   }
}



Toda persona tiene derecho a cometer errores...
la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!

juancho77

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.

joseprox

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.....
Toda persona tiene derecho a cometer errores...
la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!

juancho77

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 (java) [Seleccionar]
JButton boton= new JButton("kaka");
es una llamada que incluye al paint del frame o del panel para dibujar el boton en pantalla.

Saludos.

egyware

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.

Norbs

#6
 gracias hermano!!  ::)