Desafio POG X Elegancia

3 respostas
gqferreira

Boa tarde pessoal.

Vou apresentar uma situação pra gente ver qual seria a solução mais elegante.
É o seguinte:

Vamos imaginar uma classe que estenda a JFrame (MinhaJanela.java), certo? Agora, uma classe que estenda à JPanel (MeuPainel.java). Por último, uma classe que estenda à JDialog (MeuPopup.java). Até ai tudo bem.

A classe MinhaJanela.java contém a MeuPainel.java. Esse painel tem um JButton.
A classe MinhaJanela.java também contem uma barra de menus.
Ao clicar no menu da MinhaJanela, irá abrir o MeuPopup. Nesse Dialog tem um JSlider (tipo controle de volume).

Agora a pergunta:
Como fazer de forma elegante com que, ao mudar a posição do JSlider, mudar a posição do botão que está no MeuPainel.java?

Do jeito POG eu até sei como fazer (hummm… já fiz :lol: ) mas e de forma elegante, bem POO…

Vlw pessoal! :thumbup:

EDIT: Isso é só um HelloWorld, não servirá para nada, só para fins didáticos…

3 Respostas

jeferson1

Humm, que tal assim:

interface SliderListener{ onSliderChange(int value); }

class MeuPainel implements SliderListener{ .... }
no MeuPopup, cria um método

public void setListener(SliderListener s){this.slideList = s;}

quando modificar o Slider, faz um callback no listener
if(this.slideList!=null)this.slideList.onSliderChange(...);

após criar o MeuPopup no MeuPainel, faça uma chamada setando o listener meuPopupObj.setListener(this);

gqferreira

[email removido:
]
após criar o MeuPopup no MeuPainel, faça uma chamada setando o listener meuPopupObj.setListener(this);

Mas não é o MeuPainel que instancia a MeuPopup, é a MinhaJanela (barra de menu que tem nela) quem cria…

Jeferson_Flamini

Sem problema, set o listener pa partir dela então.

meuPopupObj.setListener(meuPainelObj);
Criado 4 de setembro de 2011
Ultima resposta 5 de set. de 2011
Respostas 3
Participantes 3