Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2014, 16:00
GregLlan
 
Fecha de Ingreso: enero-2013
Ubicación: Chile
Mensajes: 29
Antigüedad: 11 años, 11 meses
Puntos: 0
Parpadeo en método Paint

He dibujado un circulo que al pulsar las teclas de movimiento recorre el JFrame sin salir de este.

Problemas e Inquietudes:
  1. 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?
  2. ¿Como puedo evitar el parpadeo aparente luego de mover el circulo?
  3. ¿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=130y=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+10;
                }
                if(
ke.getKeyCode()==40 && y+60<size().height//abajo
               
{
                 
yy+10;
               }
                
                   if(
ke.getKeyCode()==38 && y-30>0//Arriba
                
{
                    
y-10;
                }
                if(
ke.getKeyCode()==37 && x-10 0//izquierda
               
{
                 
xx-10;
               }
                
                
repaint();
            }

            @
Override
            
public void keyReleased(KeyEvent ke) {
            }
        };
       
        
addKeyListener(pulsa);
    }

    @
Override
    
public void paint(Graphics g) {
        
    

        
        
super.paint(g); 
        
g.fillOval(xy5050);
                 

    }

 
    
    

Espero atento sus respuestas, de antemano muchas gracias.