Problema com showMessageDialog

3 respostas
sk2ck
gente, to com uma duvida em relação ao trecho do codigo:
ButtonFrame.this,
Eu dei uma olhada na API e vi que o metodo static: public static void showMessageDialog(Component parentComponent, Object message), pede no primeiro argumento um parentComponent ou null, um Frame né.. agora no codigo do livro Java Como Programar 6ed, eu não entendi o por que disso:
ButtonFrame.this,
!!!
// classe interna para tratamento de evento de botão
	private class ButtonHandler implements ActionListener
	{
		// trata evento de botão
		public void actionPerformed(ActionEvent event)
		{
			JOptionPane.showMessageDialog(ButtonFrame.this, String.format("Voce " +
					"pressionou: %s", event.getActionCommand()));
			
			System.out.printf("%s \n", event.getActionCommand()); // o metodo getActionCommand()
			// retorna o rotulo do Componet. Importante para diferenciar componentes as vezes
		}
	}

se alguém puder me explicar esse novo uso do primeiro argumento de showMessageDialog eu agradeço...

3 Respostas

F

ButtonFrame é o frame, que deve ser a classe principal onde esta outra está declarada.
Acredito que ela passa a instancia como parametro.

ViniGodoy

É que ButonHandler é uma inner class, dentro de ButtonFrame, certo?

Então, se você usar somente this em ButtonHandler, que objeto você vai obter? O seu ButtonHandler. Mas não é ele que você quer nesse caso, você quer o frame, que o ButtonHandler está dentro. O frame, não o ButtonHandler, tem que ser o pai da Dialog. E como você diz ao java que não é o ButtonHandler, mas a classe externa que você precisa? Você diz assim:
ButtonFrame.this

F

Muito bem explicado!
A minha dúvida era se o ButtonFrame era a classe externa, faltou ele mencionar isso.

Criado 11 de janeiro de 2008
Ultima resposta 12 de jan. de 2008
Respostas 3
Participantes 3