Pois é gente,
Eu gostaria que vocês me ajudassem num problema aqui.
Eu tenho um JLabel e gostaria que ele movesse quando
fosse apertado as setinhas do teclado e que mesmo elas
pressionadas ou não o meu JFrame continuasse a executar
tudo que foi programado para ele executar. Quem poder
mandar o codigo comentado eu agradeço.
Obrigado a aqueles que poderem ajudar.
Rizzo
Março 23, 2009, 12:39am
#2
Seria algo assim:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Cursor extends JFrame {
PainelFrame painel = new PainelFrame();
public Cursor()
{
this.setContentPane(painel);
this.addKeyListener(new TeclasListener());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,400);
this.setVisible(true);
}
private class PainelFrame extends JPanel
{
JLabel label = new JLabel("Label");
JTextArea taTexto = new JTextArea(3,20);
public PainelFrame()
{
taTexto.addKeyListener(new TeclasListener());
this.add(taTexto);
this.add(label);
}
}
private class TeclasListener implements KeyListener
{
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
Point posicao = painel.label.getLocation();
switch(e.getKeyCode())
{
case KeyEvent.VK_UP:
painel.label.setLocation(posicao.x, posicao.y-1);
break;
case KeyEvent.VK_DOWN:
painel.label.setLocation(posicao.x, posicao.y+1);
break;
case KeyEvent.VK_LEFT:
painel.label.setLocation(posicao.x-1, posicao.y);
break;
case KeyEvent.VK_RIGHT:
painel.label.setLocation(posicao.x+1, posicao.y);
break;
}
}
public void keyReleased(KeyEvent e) {
}
}
public static void main(String args[])
{
Cursor cursor = new Cursor();
}
}
Espero ter ajudado…
Funcionou!
Muito obrigado, mas eu só não entendi porque a area de texto.