Tenho um jframe principal chamo um Jdialog modal com o JDialog instanciado preciso limpar os componentes do Jframe com um botao que esta no JDialog.
Como passar a referência de um JFrame que já existe e não criar um novo JFrame?
use um singleton em seu jframe, e, quando precisar de uma referencia, chama o método responsável por devolver a instancia dele no singleton. (pesquise sobre o pattern singleton caso não conheça)
Passe o seu JFrame por parâmetro no construtor do seu JDialog.
[code]public class SeuJDialog extends JDialog {
SeuJFrame frame;
public SeuJDialog(SeuJFrame frame) {
super(frame);
this.frame = frame;
}
}[/code]
Assim vc pode chamar os métodos na variável frame.
Na hora de abrir o JDialog:
public void actionPerformed(ActionEvent evt) {
SeuJDialog dialog = new SeuJDialog(this);
dialog.setVisible(true);
}
Veja também esse tópico, com um exemplo funcional:
http://www.guj.com.br/posts/list/55710.java#292687
Esse pattern deve ser utilizado com cuidado em Java.
- Ele não funciona em aplicações com múltiplos classloaders. Cada classloader terá sua instância;
- Evite a inicialização “lazy”, que todo mundo sugere. Ela não só não agrega benefícios, como é menos thread-safe.
- Em termos de swing, ela não permite que você especifique quem é o “owner” da janela. Isso é especialmente problemático em JDialogs.
Esse pattern deve ser utilizado com cuidado em Java.
- Ele não funciona em aplicações com múltiplos classloaders. Cada classloader terá sua instância;
- Evite a inicialização “lazy”, que todo mundo sugere. Ela não só não agrega benefícios, como é menos thread-safe.
- Em termos de swing, ela não permite que você especifique quem é o “owner” da janela. Isso é especialmente problemático em JDialogs.
[/quote]
Desconhecia o problema com multiplos classLoaders, =D
Pois é, isso é especialmente problemático em aplicações web. Muitos servidores usam um classloader para cada sessão, e não para cada aplicação, como uma forma de garantir isolamento. Aí vc acaba tendo um singleton por session. Frameworks de DI tentam contornar esse problema se, você solicitar objetos como singleton, procure ver o código de um deles algum dia, é medonho. xD
Cara vou te falar uma coisa
como eu aprendo aqui no GUJ
ViniGodoy, parabéns pela explicação, aprendi mais uma hehehe
[quote=javasolus]Cara vou te falar uma coisa
como eu aprendo aqui no GUJ
ViniGodoy, parabéns pela explicação, aprendi mais uma hehehe[/quote]
Obrigado, só, por favor, cuidado ao ressuscitar tópicos. Levei um tempão até entender do que você estava falando…