programa muy basico que me dibuje algo en la pantalla y que pueda mover el dibujo
Publicado por jose (12 intervenciones) el 22/04/2020 03:51:56
Hola,estoy intentando hacer un programa muy basico que me dibuje algo en la pantalla y que pueda mover el dibujo con las letras o con las flechas del teclado.
El caso es que después de un tiempo (y de preguntar en esta pagina algunas cosas) he llegado a esto:
La clase Personaje es simplemente esto:
Cuando hago ambos programas por separado(uno que dibuje y otro que capture el teclado) me sale bien,pero el problema es que con esto me hace la frame y me captura el teclado,pero no entiendo bien el como hacer que me dibuje el dibujo a la vez. Mi pregunta no es que me lo resolvais diciendome el codigo, sino que alguien por favor me explique como haria que la clase paint entre en el frame,para que yo pueda entenderlo.(Se que tengo que cambiar las opciones dentro del addKeyListener para que se mueva con las teclas)
Muchas gracias por adelantado.
El caso es que después de un tiempo (y de preguntar en esta pagina algunas cosas) he llegado a esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.lang.reflect.InvocationTargetException;
import javax.swing.SwingUtilities;
class Graficos extends JFrame implements Runnable{
private JFrame vent;
public void paint(Graphics g){
super.paint(g);
int posX=300;
int posY=300;
Personaje.dibuja(g,posX,posY);
}
public static void main (String [] args)throws InterruptedException, InvocationTargetException{
SwingUtilities.invokeAndWait(new Graficos());
}
@Override
public void run(){
vent = new JFrame("Graficos");
vent.setBounds(0,0,600,600);
vent.setFocusable(true);
vent.setVisible(true);
vent.setResizable(false);
vent.setLocationRelativeTo(null);
vent.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
vent.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) { }
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key Character: " + e.getKeyChar() + "; Key Code: " + KeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void keyReleased(KeyEvent e) { }
});
}
}
1
2
3
4
5
6
7
8
9
10
11
import java.awt.Color;
import java.awt.Graphics;
class Personaje{
public static void dibuja(Graphics g,int posX,int posY){
g.setColor(new Color(127,127,127));
g.fillRect(posX,posY,20,20);
g.fillRect(posX+4,posY+20,4,10);
g.fillRect(posX+12,posY+20,4,10);
}
}
Cuando hago ambos programas por separado(uno que dibuje y otro que capture el teclado) me sale bien,pero el problema es que con esto me hace la frame y me captura el teclado,pero no entiendo bien el como hacer que me dibuje el dibujo a la vez. Mi pregunta no es que me lo resolvais diciendome el codigo, sino que alguien por favor me explique como haria que la clase paint entre en el frame,para que yo pueda entenderlo.(Se que tengo que cambiar las opciones dentro del addKeyListener para que se mueva con las teclas)
Muchas gracias por adelantado.
Valora esta pregunta


0