Estou tentando fazer um botão que faça uma variável andar sobre a matriz (por exemplo: está na posição 1,1 aperta baixo e vai para 0,1, ou [i-1][j])
Ou seja, eu queria que a ação do botão voltasse pra outro objeto pra que eu pudesse modificar a variável "posicao"
mas todos os exemplos que achei na internet o botão só responde pra ele mesmo(tipo uma calculadora que soma números e já mostra)…
Obs:Aproveitando o tópico se alguém souber como fazer pra deixar o usuário clicando(sem ter que abrir uma janela por vez) até “posicao” chegar num número qualquer que eu escolher agradeço também.
O código está assim:
[code]import javax.swing.;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.;
public class Andador extends JFrame implements ActionListener {
JLabel espaço1, espaço2, espaço3, espaço4;
JButton botaoCima, botaoEsquerda, botaoBaixo, botaoDireita;
public Andador() {
setTitle("andador");
setSize(250, 130);
Container container = getContentPane();
GridLayout grade = new GridLayout(3, 3);
container.setLayout(grade);
espaço1 = new JLabel("");
espaço2 = new JLabel("");
espaço3 = new JLabel("andador");
espaço4 = new JLabel(" v.1.2");
botaoCima = new JButton("^");
botaoEsquerda = new JButton("<");
botaoBaixo = new JButton("v");
botaoDireita = new JButton(">");
container.add(espaço1);
container.add(botaoCima);
container.add(espaço2);
container.add(botaoEsquerda);
container.add(botaoBaixo);
container.add(botaoDireita);
container.add(espaço3);
container.add(espaço4);
botaoCima.addActionListener(this);
botaoEsquerda.addActionListener(this);
botaoBaixo.addActionListener(this);
botaoDireita.addActionListener(this);
}
public void actionPerformed (ActionEvent Evento) {
if (Evento.getSource() == botaoCima) {
}
if (Evento.getSource() == botaoEsquerda) {
}
if (Evento.getSource() == botaoBaixo) {
}
if (Evento.getSource() == botaoDireita) {
}
}
}[/code]
Brow você pode começar criando uma classe que armazena o x,y
class Objeto{
private int x;
private int y;
//getters and setters
}
e no seu codigo fica
import javax.swing.*;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
public class Andador extends JFrame implements ActionListener {
JLabel espaço1, espaço2, espaço3, espaço4;
JButton botaoCima, botaoEsquerda, botaoBaixo, botaoDireita;
Objeto obj;
public Andador() {
setTitle("andador");
setSize(250, 130);
Container container = getContentPane();
GridLayout grade = new GridLayout(3, 3);
container.setLayout(grade);
obj = new Objeto();
obj.setX(0);
obj.setY(0);
espaço1 = new JLabel("");
espaço2 = new JLabel("");
espaço3 = new JLabel("andador");
espaço4 = new JLabel(" v.1.2");
botaoCima = new JButton("^");
botaoEsquerda = new JButton("<");
botaoBaixo = new JButton("v");
botaoDireita = new JButton(">");
container.add(espaço1);
container.add(botaoCima);
container.add(espaço2);
container.add(botaoEsquerda);
container.add(botaoBaixo);
container.add(botaoDireita);
container.add(espaço3);
container.add(espaço4);
botaoCima.addActionListener(this);
botaoEsquerda.addActionListener(this);
botaoBaixo.addActionListener(this);
botaoDireita.addActionListener(this);
}
public void actionPerformed (ActionEvent Evento) {
if (Evento.getSource() == botaoCima) {
obj.setY(obj.getY() + 1 );
}
if (Evento.getSource() == botaoEsquerda) {
obj.setX(obj.getX() - 1 );
}
if (Evento.getSource() == botaoBaixo) {
obj.setY(obj.getY() - 1 );
}
if (Evento.getSource() == botaoDireita) {
obj.setX(obj.getX() + 1 );
}
}
}
ai é só vc brincar ae ^^
Abraço.
Movido para o fórum de interface gráfica. Por favor, leia atentamente a descrição dos fóruns antes de postar.
kritiuns , valeu pela ajuda, usei um set pra mudar o valor da variável, ficou assim:
[code]public void actionPerformed (ActionEvent Evento) {
if (Evento.getSource() == botaoCima) {
Teste1.setPosicaoLinha(1);
}
if (Evento.getSource() == botaoEsquerda) {
Teste1.setPosicaoColuna(-1);
}
if (Evento.getSource() == botaoBaixo) {
Teste1.setPosicaoLinha(-1);
}
if (Evento.getSource() == botaoDireita) {
Teste1.setPosicaoColuna(1);[/code]
Acontece o seguinte estou rodando um teste JUNIT que da true se a posição for tal.Ele começa na posição errada e o botão serviria pra ir mudando a posição, mas quando eu rodo o teste ele abre o botão e não faz nada independente do que eu clique.
O código da classe Teste1 ta assim:
[code]public boolean teste(int p) {
Andador janela = new Andador();
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setVisible(true);
while(localizacaoPessoa != matriz[0][1] && localizacaoPessoa != matriz[2][2]){
linhaAtual = linhaAtual + movimentoLinha;
colunaAtual = colunaAtual + movimentoColuna;
}
if (localizacaoPessoa == matriz[0][1]) {
fimTeste1 = true;
}
if (localizacaoPessoa == matriz[2][2])
fimTeste1 = true;
return fimTeste1;
}
public static void setPosicaoLinha(int direcao){
movimentoLinha = direcao;
}
public static void setPosicaoColuna(int direcao){
movimentoColuna = direcao;
}
}[/code]