Eventos de botão

4 respostas
C
Galera, sou novo nessa coisa do java e estou apanhando para preparar um projeto de uma disciplina de mestrado em ensino de ciências e matemática.

Não sei como fazer para a aplicação principal VetorDemo chamar uma outra classe desVetor atraves do click num botão. A classe pricipal abre o Frame mas quando clico no botão nada acontece.

Alguém pode me dizer o que está errado!

Sistema Windows XP/2000 - editor Eclipse

import java.awt.<em>;

import java.awt.event.</em>;

import java.util.Vector;

public class VetorDemo extends Frame implements ActionListener{

private Panel pTop, pBot;

private Button b1, b2, b3, b4;

private int x1,x2,y1,y2;
public VetorDemo () {

super(Vetores);

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

setSize(600,400);

setLocation(d.width/7,d.height/7);

setBackground(SystemColor.control);
b1 = new Button ("--&gt;");
	b1.addActionListener(null);
	b2 = new Button ("+");
	//b2.addActionListener(this);
	b3 = new Button ("-");
	//b3.addActionListener(this);
	b4 = new Button ("Limpar");
	//b4.addActionListener(this);
	pTop = new Panel (new FlowLayout());
	pTop.setBackground(Color.lightGray);
	pBot = new Panel(new GridLayout(1,4));
	
	pBot.add(b1);
	pBot.add(b2);
	pBot.add(b3);
	pBot.add(b4);
	add(pBot, BorderLayout.SOUTH);	
}
private static final long serialVersionUID = 1L;

@SuppressWarnings(deprecation)

static public void main(String args[]) {

VetorDemo f = new VetorDemo();

f.addWindowListener(new CloseWindowAndExit());

f.show();

}

public void mouseClicked(MouseEvent e) {}
public void actionPerformed(ActionEvent e, desVetor desVetor) {

x1=10;

x2=100;

y1=10;

y2=200;	

if(e.getSource()== b1){

desVetor = (desVetor) new desVetor(x1,y1,x2,y2);

}

}

public void actionPerformed(ActionEvent e) {}

}

4 Respostas

BrunoBastosPJ

Falai chicojhp, você não está adicionando nenhum listener em nenhum dos botões… Essa linha aqui

b1.addActionListener(null);

você está adicionando nulo e a dos outros botões estão comentadas… Como sua classe implementa ActionListener basta você mudar a linha acima para

b1.addActionListener(this);

e quando você clicar no botão b1 ele vai executar o método actionPerformed da sua classe

C

Bruno, valeu!!!
Mas fiz isso e continua não rodando. Não sei se o problema está na outra classe. Veja o código abaixo.

import java.util.Vector;

public class desVetor {

private int xi, xf, yi, yf;
public Vector u;

public desVetor (int x1, int y1, int x2, int y2){

xi = x1;

yi = x1;

xf = x1;

yf = x1;

@SuppressWarnings(unused)

Vector u = new Vector (xf-xi,yf-yi);

}

public void paint(Graphics g){

g.drawLine(xi,yi,xf,yf);

g.drawString(u, (xi+xf)/2, (yi+yf)/2);

}

}
BrunoBastosPJ

modifica esse código

public void actionPerformed&#40;ActionEvent e, desVetor desVetor&#41; &#123;
x1=10;
x2=100;
y1=10;
y2=200;
if&#40;e.getSource&#40;&#41;== b1&#41;&#123;
desVetor = &#40;desVetor&#41; new desVetor&#40;x1,y1,x2,y2&#41;;
&#125;
&#125;
public void actionPerformed&#40;ActionEvent e&#41; &#123;&#125;
&#125;

por esse

public void actionPerformed&#40;ActionEvent e&#41; &#123;
desVetor des;
x1=10;
x2=100;
y1=10;
y2=200;
if&#40;e.getSource&#40;&#41;== b1&#41;&#123;
des = new desVetor&#40;x1,y1,x2,y2&#41;;
&#125;
&#125;
&#125;
C

Aí, sô chato né?

Bruno de novo não adiantou!!!

Não exibiu o desenho no painel.

E me dá um aviso de que a variavel des não foi lida.

Criado 1 de dezembro de 2006
Ultima resposta 1 de dez. de 2006
Respostas 4
Participantes 2