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) {} }