Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2010, 08:50
Avatar de arkuel
arkuel
 
Fecha de Ingreso: abril-2008
Ubicación: León
Mensajes: 17
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema con código

Hola a tod@s!!

Estoy con un código de java que debería generar una serie de figuras geométricas y luego estas poder ser arrastradas por el usuario. En mi caso es una bañera que está formada por dos rectángulos y un circulo. El caso es que no me pinta nada y me da una excepcion de java.lang.nullpointer, segun esta excepción es que va algo que llega a vacio pero si en vez de poner el codigo ahi lo pongo en un método dentro de la clase principal no me llega nada a vacio y me lo muestra sin problemas. Me estoy volviendo loca intentando averiguar el por que; os dejo el código y si alguien me puede exar un cable se lo agradezco. Gracias.

Código:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;

public class DragTest {

public static void main(String[] args) {
  MyWindow window = new MyWindow();
    window.setVisible(true);
    window.setPreferredSize(new Dimension(400,400));
    window.pack();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
class MyWindow extends JFrame{
  public MyWindow(){
    super("Drag test");
    Container container = getContentPane();
    container.setLayout(null);

//     MyButton boton1 = new MyButton("Move me");
//    container.add(boton1);
//    boton1.setBounds(10, 10, 100, 30);

    MyBañera bañera = new MyBañera("bañera");
    container.add(bañera);
    bañera.paint(getGraphics());
    

  }
}
//class MyButton extends JButton implements MouseMotionListener{
//  public MyButton(String text){
//    super.setText(text);
//    addMouseMotionListener(this);
//  }

//public void mouseDragged(MouseEvent mme) {
//    setLocation(
//        this.getX() + mme.getX() - this.getWidth() / 2,
//        this.getY() + mme.getY() - this.getHeight() / 2
//    );
//  }
//  public void mouseMoved(MouseEvent mme) {}
//}

class MyBañera extends JApplet implements MouseMotionListener{
  public MyBañera(String text){
    super.setName(text);
    addMouseMotionListener(this);
  }

    @Override
  public void paint(Graphics g){

        Graphics2D g2 = (Graphics2D)g;
        //Una bañera
         //Una bañera
        g2.setColor(Color.BLACK);
        Rectangle2D r = new Rectangle2D.Float(50.0f, 50.0f,110.0f, 200.0f);
        g2.fill(r);
        g2.setColor(Color.BLUE);
        RoundRectangle2D rr = new RoundRectangle2D.Float(
        60.0f, 60.0f, 90.0f, 180.0f, 25.0f, 25.0f);
        g2.fill(rr);
        g2.setColor(Color.DARK_GRAY);
        Ellipse2D e = new Ellipse2D.Float(100.0f, 80.0f, 10.0f, 10.0f);
        g2.fill(e);
        g2.draw(r);
        g2.draw(rr);
        g2.draw(e);
    }
public void mouseDragged(MouseEvent mme) {
    setLocation(
        this.getX() + mme.getX() - this.getWidth() / 2,
        this.getY() + mme.getY() - this.getHeight() / 2
    );
  }
  public void mouseMoved(MouseEvent mme) {}
}