Move rectangle in java

di il
1 risposte

Move rectangle in java

Import java.awt.Color;
import java.awt.Grapics;
import java.awt.event.ActionListener;
import java.awt.evet.ActionEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.Jpanel;
import javax.swing.Timer;


public class Prova extends JPanel implements ActionListener, KeyListener{
Timer tm = new Timer(5, this);
int x =1, int y = 1, velX = 0, velY = 0;

public Prova(){
tm.start();
addKeylistener(this);
setFocusable(true);
setFocusTraversalkeyenabled(false);
}

public void paintComponent(Graphics g){

super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(x, y, 50, 30);

}

public void actionPerformed(Action event e){

if(x<0){
velX= 0;
x= 0;
}
if(x>530){
velX= 0;
x= 530;
}

if(y<0){
velY= 0;
y= 0;
}
if(y>330){
velY= 0;
y= 330;
}
x = x + velX;
y= y + velY;
repaint();
}

public void keypresed(KeyEvent e){
int c = e.getKeyCode();

if (c == keyEvent.VK_LEFT){
velX = -1;
velY = 0;
}
if( c == keyEvent.VK_UP){
velX= 0;
velY = -1;
}
if (c == KeyEvent.VK_RIGHT){
velX= 1;
velY = 0;
}
if( c == KeyEvent.VK_DOWN){
velX= 0;
velY= 1;
}
}

public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){
velX = 0;
velY= 0;
}


public static void main(String[] args){

Prova t = new Prova();
JFrame jf = new JFrame();
jf.setTitle("Prova_1");
jf.setSize(600, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(t);

}


Salve a tutti è un po' di giorni che sto cercando di capire perche' mi trova cosi' tanti errrori nella compilazione di questo programma... io uso DrJava... cosa posso fare per risolvere??

HELP!!

1 Risposte

  • Re: Move rectangle in java

    Ciao, per prima cosa il codice va postato indentato e all'interno dei tag CODE. Detto questo, c'erano parecchi errori di "ortografia": lettere minuscole al posto di maiuscole, ecc. Il tuo IDE non ti segnalava queste cose? Eclipse ha trovato tutto in pochi secondi...
    Questo codice viene compilato correttamente e visualizza un rettangolo blu nell'angolo in alto a sinistra di una finestra. Il problema è che però non si muove alla pressione delle frecce sulla tastiera: evidentemente ci sono altri errori (di logica) che devi correggere.
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.Action;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.Timer;
    
    public class Prova extends JPanel implements ActionListener, KeyListener {
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    
    	Timer tm = new Timer(5, this);
    	int x = 1, y = 1, velX = 0, velY = 0;
    
    	public Prova() {
    		tm.start();
    		addKeyListener(this);
    		setFocusable(true);
    		setFocusTraversalKeysEnabled(false);
    	}
    
    	public void paintComponent(Graphics g) {
    
    		super.paintComponent(g);
    		g.setColor(Color.BLUE);
    		g.fillRect(x, y, 50, 30);
    
    	}
    
    	public void actionPerformed(Action event) {
    
    		if (x < 0) {
    			velX = 0;
    			x = 0;
    		}
    		if (x > 530) {
    			velX = 0;
    			x = 530;
    		}
    
    		if (y < 0) {
    			velY = 0;
    			y = 0;
    		}
    		if (y > 330) {
    			velY = 0;
    			y = 330;
    		}
    		x = x + velX;
    		y = y + velY;
    		repaint();
    	}
    
    	@Override
    	public void keyPressed(KeyEvent e) {
    		int c = e.getKeyCode();
    
    		if (c == KeyEvent.VK_LEFT) {
    			velX = -1;
    			velY = 0;
    		}
    		if (c == KeyEvent.VK_UP) {
    			velX = 0;
    			velY = -1;
    		}
    		if (c == KeyEvent.VK_RIGHT) {
    			velX = 1;
    			velY = 0;
    		}
    		if (c == KeyEvent.VK_DOWN) {
    			velX = 0;
    			velY = 1;
    		}
    
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void keyTyped(KeyEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void keyReleased(KeyEvent e) {
    		velX = 0;
    		velY = 0;
    	}
    
    	public static void main(String[] args) {
    
    		Prova t = new Prova();
    		JFrame jf = new JFrame();
    		jf.setTitle("Prova_1");
    		jf.setSize(600, 400);
    		jf.setVisible(true);
    		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		jf.add(t);
    
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte