Tentando Construir SubClass - "again"

4 respostas
M

PessoALL, bom dia!

Me corrigem se estiver errado, testes de criação de subclasses

Minha subclasse Botao.java

public class Botao extends JButton implements ActionListener { private JButton sair; Icon sairIcon = new ImageIcon( "firstrec.gif" ); Icon sairAtivoIcon = new ImageIcon( "firstrec2.gif" ); public Botao( ) { sair = new JButton(saiIcon); sair.setRolloverIcon( sairAtivoIcon ); sair.setMnemonic(KeyEvent.VK_S); } public void actionPerformed(ActionEvent e) { if (e.getSource() == sair) { System.out.println("Clicou no sair"); } } }
Meu Prog

public class TesteBotao extends JPanel implements ActionListener { private Botao sair; public TesteBotao { super(); sair = new Botao(); ?????????????????????????
a situação é seguinte, o botão até aparece no meu prog TesteBotao, mas sem o icone, não executa a action etc, o que estou fazendo errado?.

Outro detalhe, caso o botão sair tenha que executar um metodo que esta no meu TesteBotao.java, como fazer? lembrando que a ideia seria definir os meus objeto (botão) e depois referencia-los nos meus progs, é assim que funciona?

Desde já agradeço.

Marcos

4 Respostas

J

Tudo bem?

Vou fazer uma observação… vc está estendendo um JButton… blz… pra que criar um JButton dentro dele… não precisa… sua classe é um JButton… ai para por exemplo, adicionar um evento na sua classe Botao é só fazer assim:

this.addActionListener(this);

Por exemplo, vc adicionou icones… então faz assim:

this.setRolloverIcon( sairAtivoIcon );

Blz? :wink:

M

blz javateco.
Então no meu prog,

private Botao sair; sair = new Botao(); ok?

Mas mesmo assim não aparece o icone e nem action.

outro detalhe sobre o metodo na aciton, como eu executario um metodo que estivisse no meu prog, mas seria chamado da subclasse botão?

Desde já agradeço.

Marcos

J

Tente colocar o caminho todo da imagem do icone…
Sobre o evento, no primeiro código que vc postou, vc criou o evento na classe Botao, só que esqueceu de adiciona-lo no.

Por exemplo, vc teria que fazer algo assim:

this.addActionListener(this);

blz?

M

javateco bom dia!
eu já havia feito o que vc sugeriu, eu não coloquei o caminho completo do icone porque este icone eu já uso em um outro botão que não é desta subclasse e aparece o icone normalmente, a action está definida mas não funciona, veja

public class Botao extends JButton implements ActionListener {
	private JButton sair;

	Icon sairIcon = new ImageIcon( "firstrec.gif" );
	Icon sairAtivoIcon = new ImageIcon( "firstrec2.gif" );

	public Botao( ) {
		this.addActionListener( this );
		this.setRolloverIcon( sairAtivoIcon ); 
		this.setMnemonic( KeyEvent.VK_S );
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == sair) {
			System.out.println("Clicou no botao sair");
		}
	}
}

o meu prog (classe)

sair = new Botao();
buttonsPanel.add(sair);

Desde já agradeço.

Marcos

Criado 14 de maio de 2004
Ultima resposta 17 de mai. de 2004
Respostas 4
Participantes 2