tenhu um frame… e a partir dele chamo o dialog…
mas quando fecho o dialog teria q retornar pro frame alguns dados…
no caso propriedades de uma fonte…
alguem sabe como retorno fiz um metodo dentro do frame q é para ser chamado no dialog e acesa o dialog…
mas nao consigo acessa chamar o metodo que esta no frame atraves do dialog…
Esse método por acaso está sendo static? Você tem a referencia do JFrame em seu JDialog?
Tchauzin!
R
rafabenevente
a questao nao é essa
tenhu um editor de texto
o dialog seria formatar fonte…
entao tenho que esperar o usuario escolher a fonte e quando ele for fechado
retornar o que ele escolheu…
estou fazendo da seguinte forma…
quando ele clica em Ok… tento chamar um metodo que esta na classe do frame…(aqui esta meu problema nao consigo uma forma de chamar esse metodo…)
e nesse metodo faço um uma chamada em um metodo da classe dialog… (essa parte ja fiz)
esse metodo retorna um atributo do tipo Font q seto no text area!!!
nao sei c ficou muito claro mas é isso…
R
rafabenevente
lina:
Oi,
Esse método por acaso está sendo static? Você tem a referencia do JFrame em seu JDialog?
Tchauzin!
nao é static…
tb nao tenhu…
no frame eu tenhu referencia pro dialog…
mas nao tenhu no dialog pro frame… ai esta meu problema…
V
ViniGodoy
Seu dialog é modal?
Por que não funcionaria o que eu coloquei ali em cima?
Novamente, ao invés do Dialog chamar o frame, faça o dialog retornar a fonte escolhida. E leia isso a partir do Frame direto.
V
ViniGodoy
Outra (péssima) opção é passar o frame como parâmetro para o JDialog.
Aí vc teria uma referência ao Frame de dentro da dialog. Mas isso diminui as chances de reuso do JDialog. Além de ser uma prática super incomum.
O ideal mesmo é fazer ali o que eu falei.
Geralmente, dialogs apenas requisitam algum tipo de informação ao usuário (como a fonte). Então, o natural é que essa dialog seja setada como modal, e simplesmente retorne que informação foi escolhida para quem chamou a JDialog. Você faz isso simplesmente criando um getter na sua dialog. Uma boa opção também é criar algum método que retorne true caso o usuário tenha clicado no ok, e false caso ele tenha cancelado a ação.
Acredito que o melhor será criar uma classe que extenda a classe JDialog, no seu caso JFontChooserDialog extends JDialog,
faça ela ser modal e apos o retorno acesse os metodos que você criou, tipo dialog.fontName(), dialog.fontColor()… etc.
R
rafabenevente
ViniGodoy:
Outra (péssima) opção é passar o frame como parâmetro para o JDialog.
Aí vc teria uma referência ao Frame de dentro da dialog. Mas isso diminui as chances de reuso do JDialog. Além de ser uma prática super incomum.
O ideal mesmo é fazer ali o que eu falei.
Geralmente, dialogs apenas requisitam algum tipo de informação ao usuário (como a fonte). Então, o natural é que essa dialog seja setada como modal, e simplesmente retorne que informação foi escolhida para quem chamou a JDialog. Você faz isso simplesmente criando um getter na sua dialog. Uma boa opção também é criar algum método que retorne true caso o usuário tenha clicado no ok, e false caso ele tenha cancelado a ação.
td bem entendi mas onde colocaria esse metodo para verificar se ele confirmou???
do msm jeito teria que chamar ele quando o dialog fosse fechado e ai q esta meu problema...
me desculpe mas nao entendendo muito bem issu...
V
ViniGodoy
Você põe no JDialog. O método isConfirmou deve retornar true se ele pressionou ok, false se não pressionou.
Basta colocar um atributo boolean no seu dialog, seta-lo para false, e deixa-lo true se o sujeito pressionou ok.
publicJFonteDialogextendsJDialog{privatebooleanconfirmou=false;//resto do código da dialog//Método que trata o botão okpublicvoidonOk(){confirmou=true;this.dispose();}publicbooleanisConfirmou(){returnconfirmou;}}
L
lina
ViniGodoy:
Outra (péssima) opção é passar o frame como parâmetro para o JDialog.
Aí vc teria uma referência ao Frame de dentro da dialog. Mas isso diminui as chances de reuso do JDialog. Além de ser uma prática super incomum.
O ideal mesmo é fazer ali o que eu falei.
Oi,
Quando perguntei se ele tinha uma referencia do JFrame, seria essa pessima ideia!
Realmente é horrivel, porém para muitos é a mais utilizada!
A melhor maneira é fazer métodos gets e sets… (conforme você falou)
Pense nisso!
Tchauzin!
R
rafabenevente
ViniGodoy:
Você põe no JDialog. O método isConfirmou deve retornar true se ele pressionou ok, false se não pressionou.
Basta colocar um atributo boolean no seu dialog, seta-lo para false, e deixa-lo true se o sujeito pressionou ok.
publicJFonteDialogextendsJDialog{privatebooleanconfirmou=false;//resto do código da dialog//Método que trata o botão okpublicvoidonOk(){confirmou=true;this.dispose();}publicbooleanisConfirmou(){returnconfirmou;}}
to dando trabalho em...
mas td bem ateh aqui entendi...
mas a duvida que me resta é quando vo chamar este metodo q confirma c ele echou e me retorna a fonte no JFrame...
tipo tem como eu saber quando ele fechou o dilog pra acionar o metodo??
V
ViniGodoy
Se seu dialog for modal, ele só vai sair do setVisible se o usuário tiver fechado a JDialog…
R
rafabenevente
mas eu queria saber onde chamaria o metodo que verificaria…
pq estou fazendo assim ao fechar eu chamo um metodo no jframe e esse chama um do jdialog
vcs me deram a sugentao de fazer um boolean verificar se ele foi fechado ok…
agr so nao entendi onde no jframe eu chamaria o metodo que verifica e por consequencia o metodo que pega a fonte em si…
V
ViniGodoy
Logo depois da linha, no frame, onde você faz setVisible(true) na sua JDialog.
Imagine que esse é o código do seu Frame:
publicvoidescolherFonte(){JEscolherFonteDialogdlg=newJEscolherFonteDialog();dlg.setVisible(true);//Usuário pressionou cancelar na dialog?if(!dlg.isConfirmou()){return;}this.definirFonteNaSelecao(dlg.getFonteEscolhida());}