He dibujado un circulo que al pulsar las teclas de movimiento recorre el JFrame sin salir de este.
Problemas e Inquietudes:
- El método que se encuentra dentro de keyPressed – > size().width esta depreciado. A pesar de buscar no he encontrado el correcto ¿Cual es el método actual?
- ¿Como puedo evitar el parpadeo aparente luego de mover el circulo?
- ¿Que técnicas puedo implementar para mejorar en el código?
Link: http://1drv.ms/1gMWjqP
Codigo:
Código PHP:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pruebagraphics;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
/**
*
* @author Gregory
*/
public class PruebaGraphics extends JFrame{
int x=130, y=130;
public static void main(String[] args) {
new PruebaGraphics();
}
public PruebaGraphics() {
this.setTitle("Dibujando sobre lienzo en java");
this.setSize(300,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
KeyListener pulsa = new KeyListener() {
@Override
public void keyTyped(KeyEvent ke) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode()==39 && x+60<size().width) //derecha
{
x = x+10;
}
if(ke.getKeyCode()==40 && y+60<size().height) //abajo
{
y= y+10;
}
if(ke.getKeyCode()==38 && y-30>0) //Arriba
{
y = y-10;
}
if(ke.getKeyCode()==37 && x-10 > 0) //izquierda
{
x= x-10;
}
repaint();
}
@Override
public void keyReleased(KeyEvent ke) {
}
};
addKeyListener(pulsa);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 50, 50);
}
}
Espero atento sus respuestas, de antemano muchas gracias.