Código:
ese seria el programa principal, xd tiene otras clases, pero ahi es donde no se como hacer repaint, o actualizar para q muestre la nueva posicion del objeto RectanguloDibujable,, enrealidad es un circulo.. trate haciendo pannel.paint(g), pero me tira un monton de errores y no lo dibuja XD...package geometria; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import java.util.ArrayList; import java.util.Iterator; import java.util.Random; public class Programa implements KeyListener{ public void update(Graphics g){ paint(g); } static Graphics g; ArrayList arr; JFrame ventana; static CuadradoDibujable cuadrado; panelucho pannel; Random rnd=new Random(); public void createAndShowGui(Graphics g){ Programa asd= new Programa(); ventana = new JFrame("ventana"); ventana.setVisible(true); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana.setSize(500,500); cuadrado = new CuadradoDibujable(225,200,50,50,Color.RED); arr = new ArrayList(); arr.add(cuadrado); pannel = new panelucho(arr); ventana.add(pannel); pannel.setFocusable(true); pannel.addKeyListener(this); } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ Programa asd = new Programa(); asd.createAndShowGui(g); } }); } @Override public void keyTyped(KeyEvent ke) { } @Override public void keyPressed(KeyEvent ke) { Color colo1 = new Color(240,240,240); Color colo2 = new Color(240,241,240); CuadradoDibujable cuad =(CuadradoDibujable)arr.get(0); int x=cuad.x; int y=cuad.y; int tecla=ke.getKeyCode(); Color color=new Color(240,240,240); if(tecla==37){ cuad.mover(x-10,y); pannel.paint(g); } if(tecla==38){ cuad.mover(x,y-100); boolean ver=false; while(!ver){ int azar=rnd.nextInt(5); switch (azar){ case 0: { if (pannel.getBackground().equals(colo1)){ break; } pannel.setBackground(colo1);ver=true;break;} case 1: { if (pannel.getBackground().equals(colo2)){ break; } pannel.setBackground(colo2);ver=true;break;} } } } if (tecla==39){ cuad.mover(x+10,y); boolean ver=false; while(!ver){ int azar=rnd.nextInt(5); switch (azar){ case 0: { if (pannel.getBackground().equals(colo1)){ break; } pannel.setBackground(colo1);ver=true;break;} case 1: { if (pannel.getBackground().equals(colo2)){ break; } pannel.setBackground(colo2);ver=true;break;} } } } if (tecla==40){ cuad.mover(x,y+10); boolean ver=false; while(!ver){ int azar=rnd.nextInt(5); switch (azar){ case 0: { if (pannel.getBackground().equals(colo1)){ break; } pannel.setBackground(colo1);ver=true;break;} case 1: { if (pannel.getBackground().equals(colo2)){ break; } pannel.setBackground(colo2);ver=true;break;} } } } } public void paint(Graphics g){ CuadradoDibujable cuad =(CuadradoDibujable)arr.get(0); cuad.dibujar(g); } @Override public void keyReleased(KeyEvent ke) { } }
espero q alguien me ayude xd.