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.


