Re adicionar um botão

4 respostas
velo

Opa pessoal.....

Imaginem um JFrame com um JPanel e Layout Border. Eu adiciono 3 botões ( b1, b2, b3 ), no north, center e south.

Adiciono um mouse listerner no b1. Esse mouse listener deve adicionar outro botão (b4) no painel.center.

Mas não toh conseguindo.

Olha o que eu fiz.....

public class TesteNovaTelaProjeto extends JFrame {
	JPanel painel = new JPanel(new BorderLayout());

	public TesteNovaTelaProjeto() {
		setSize(800, 600);

		//Painel dos icones
		JButton b1 = new JButton("b1");
		JButton b2 = new JButton("b2");
		JButton b3 = new JButton("b3");
		b1.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				change();
			}

			public void mouseEntered(MouseEvent arg0) {}
			public void mouseExited(MouseEvent arg0) {}
			public void mousePressed(MouseEvent arg0) {}
			public void mouseReleased(MouseEvent arg0) {}
		});
		painel.add("North", b1);
		painel.add("Center", b2);
		painel.add("South", b3);

		//Adiciona o Painel no ContentPane
		getContentPane().add(painel);

	}

	public void change() {
		System.out.println("teste");
		JButton b4 = new JButton("b4");
		painel.add("Center", b4);
		painel.repaint();
	}

	public static void main(String[] args) {
		TesteNovaTelaProjeto a = new TesteNovaTelaProjeto();
		a.show();
	}
}

Errei muito feio?

4 Respostas

Hempx

acho que está certo. Talvez seja porque vc está querendo colocar um botão no CENTER e já existi um lá. Talvez o primeiro está sobreponto o outro.

Outra coisa. Vc está usando o evento errado para o botão.

O certo aqui seria utilizar ActionListener.

Do jeito que voce está usando qualquer lugar que vc clicar no botão do mouse está disparando o metado change.

velo

“Hempx”:
acho que está certo. Talvez seja porque vc está querendo colocar um botão no CENTER e já existi um lá. Talvez o primeiro está sobreponto o outro.

Mas é justamente o que eu quero… reescrever o botão que tá no centro…

No caso, o meu problema é com JPanel’s, apenas ilustrei com JButton pra simplificar o código…

Como eu posso fazer um .remove(“Center”)?

VELO

velo

“Hempx”:

O certo aqui seria utilizar ActionListener.

Do jeito que voce está usando qualquer lugar que vc clicar no botão do mouse está disparando o metado change.

Deixa eu ver se entendi…

Com o MouseListener ele clica no botão seja com o botão direito, seja com o botão esquerdo, seja com o do meio, eh isso? E com o ActionListerner dá pra “controlar” isso?

velo

Pessoal, mudei o metodo change() , agora exibe o botão, mas quando vou clicar nele o botão b2 aparece denovo na tela… alguem sabe como resolver?

public final void change() { System.out.println("teste"); JButton b4 = new JButton("b4"); painel.add("Center", b4); show(); }

Criado 27 de outubro de 2004
Ultima resposta 28 de out. de 2004
Respostas 4
Participantes 2