Dá para "Travar" um programa c/ um jFrame como um JOptionPane faz?

2 respostas
tiagomac

Olá pessoal,

Então, eu não sei se me expressei bem no titulo, mas vou tentar explicar melhor:
Meu professor pedio um trabalho p/ ser feito em java, o trabalho já tá pronto, só precisa agora dos tratamentos de erro e corrigir 1 pequeno problema.
esse problema consiste no seguinte: o programa é feito todo baseado em JOptionPane, pelo menos quase toda interação c/ o usuário. mas o programa roda da seguinte forma:

public static void main(String[] args) { Programa programa = new Programa(); boolean continua = true; while (continua) continua = programa.run(); }
como dá para ver, todo o programa fica no método run() da classe programa… nela eu chamo um JOptionPane que exibe o menu e espera o usuário entrar com o valor da opção desejada, essa é verificada no switch para então executar a ação.
tudo funciona bem, se o usuário quer cadastrar um cliente, vem as perguntas para cadastrar o cliente em um joptionpane.showInputDialog e o programa espera o usuário entrar c/ o valor para voltar ao inicio… porem, na hora de listar o resultado de uma determinada operação, eu uso uma classe que extende de jFrame (uma interface gráfica criada pelo Visual Editor) e chamo ela passando uma String que sera o que ela deve exibir no jTextArea (a classe basicamente é um jframe c/ um jtextarea para exibir o conteúdo e um botão, para fechar essa janela)… acontece que, quando eu chamo essa classe, assim:

case '8': // listar emprestimos do cliente xx
			StringBuilder outputCliente = IntCliente.getEmprestimosCliente(myHash.get("Emprestimos"));
			Lista listaCliente = new Lista(outputCliente);
			listaCliente.setVisible(true);
			break;

o que acontece nessa hora é que o programa chama a parte gráfica c/ o resultado exibido no jtextarea, tudo como eu quero, mas o que acontece na mesma hora é que essa janela ao invés de parar nessa tela até que o usuário clique no botão “Fechar listagem”, ela é jogada para trás do menu do programa que nessa hora já deu um novo loop e voltou a exibir o menu do joptionpane.showinputdialog em cima do jFrame(da listagem em questão)…

eu não sei se consegui explicar bem, mas até q é simples… eu preciso saber só se existe um meio de “parar” o programa nesse trecho até que a janela seja destruída? por um dispose não sei… to precisando de uma dica ai nesse ponto, se precisarem de mais pedaços de código ou até de uma screenshot de como fica é só avisar q eu coloco aqui…

vou criar até um novo post pedindo socorro c/ o tratamento de erro, quem se dispor a me socorrer eu serei muito grato…

valeu a todos e um forte abraço.

2 Respostas

ViniGodoy

Ao invés de um JFrame, use um JDialog.

E daí, use o método setModal(true);

O setVisible(true) vai “travar” até que o JDialog feche.

tiagomac

Hmmm, vlw mais uma vez Vini, vou tentar isso mais tarde… mas me tira uma dúvida, pelo jDialog eu posso colocar um jTextArea? eu talvez não tenha entendido bem… eu não crio um jFrame, crio direto um jDialog, dou um setModal(true) nele e dai vou poder chamar pelo setVisible(true) que o código vai se manter ali até o jDialog fechar? é isso?

  • uma vez, valeu kra :-)!
Criado 12 de junho de 2007
Ultima resposta 12 de jun. de 2007
Respostas 2
Participantes 2