Jframe só perde focusable se o mesmo for fechado...[resolvido]

16 respostas
D

Mais uma vez venho pedir a ajuda de vocês. Agora é sobre a questão de focus…
Gostaria de saber como faço para um jframe não perder o focus exceto se o mesmo for fechado.
Explicando com um exemplo:
tenho um jframe A que abre um jframe B sem que feche o jframe A;
o usuário só poderá retornar ao jframe A somente se ele fechar o jframe B ou outra opção que estiver nesse jframe (B). é que nem num jogo, você está jogando ai da um erro, dai aparece aquela tela chata que não te deixa jogar, então você é obrigado a escolher a opção que a tela te dá se não você não volta pro jogo ou sei lá o que. Enfim, espero que tenham entendido.

16 Respostas

D

e pq vc nao pode esconder o frame A???

Tchello

Tente usar o AwaysOnTop

E

david.jv:
Mais uma vez venho pedir a ajuda de vocês. Agora é sobre a questão de focus…
Gostaria de saber como faço para um jframe não perder o focus exceto se o mesmo for fechado.
Explicando com um exemplo:
tenho um jframe A que abre um jframe B sem que feche o jframe A;
o usuário só poderá retornar ao jframe A somente se ele fechar o jframe B ou outra opção que estiver nesse jframe (B). é que nem num jogo, você está jogando ai da um erro, dai aparece aquela tela chata que não te deixa jogar, então você é obrigado a escolher a opção que a tela te dá se não você não volta pro jogo ou sei lá o que. Enfim, espero que tenham entendido.

A é um JFrame, e B tem de ser um JDialog. Ao criar B, é necessário passar A como um dos parâmetros do construtor.

D

Amigão, é o seguinte… Vamos supor que você esteja instalando um programa, dai você tem que colocar a licença para prosseguir, supondo que a licença que você inseriu esteja incorreta, o programa retorna uma tela (mensagem de erro) pra você dizendo que sua licença não é valida. Daí você só consegue voltar pra tela anterior se você fechar essa tela(mensagem de erro) para então conseguir inserir uma nova licença… esse é o mesmo motivo que estou usando…
espero que tenha entendido.

D

entanglement:
david.jv:
Mais uma vez venho pedir a ajuda de vocês. Agora é sobre a questão de focus…
Gostaria de saber como faço para um jframe não perder o focus exceto se o mesmo for fechado.
Explicando com um exemplo:
tenho um jframe A que abre um jframe B sem que feche o jframe A;
o usuário só poderá retornar ao jframe A somente se ele fechar o jframe B ou outra opção que estiver nesse jframe (B). é que nem num jogo, você está jogando ai da um erro, dai aparece aquela tela chata que não te deixa jogar, então você é obrigado a escolher a opção que a tela te dá se não você não volta pro jogo ou sei lá o que. Enfim, espero que tenham entendido.

A é um JFrame, e B tem de ser um JDialog. Ao criar B, é necessário passar A como um dos parâmetros do construtor.

entanglement, não posso usar um jDialog, na verdade posso, mas ficaria muito complicado, pois no meu caso são dois jframes com muito “conteúdo”, tem muitas coisas, que ao meu ver não seria aconselhável usar o jDialog… mas valeu pela dica.

D

Tchello como eu usaria esse AwaysOnTop ?
Teria como você me dar um exemplo?

Tchello

david.jv:
Tchello como eu usaria esse AwaysOnTop ?
Teria como você me dar um exemplo?

Talvez isso ajude:
http://www.java-forums.org/awt-swing/27247-jframe-declared-setalwaysontop-doesnt-stay-top-during-slide-show.html

D

¬¬’ como sou burr… me expressei mal galera, o que eu quero é quase o que esse código (AwaysOnTop) faz… só que ele permite que eu mexa na tela anterior.
Vou tentar explicar melhor:
EXEMPLO: tenho uma janela de login, dai a pessoa digita o usuario e a senha, suponhamos que o usuario esteja errado e o programa retorna uma mensagem dizendo que o usuario está incorreto. Depois que essa mensagem aparecer a pessoa não pode de maneira alguma mexer na outra tela (tela de login), tipo, o usuario é obrigado a fechar a tela de erro para conseguir mexer na outra tela.

Acho que agora saiu o que eu queria…
Ops… já ia esquecendo de agradecer ao Tchello e desculpar tbm, pois me expressei erroneamente.
se alguém ou até mesmo vc Tchello souber como fazer isso eu agradeço

Eric_Yuzo

Nesse caso teria que seguir a dica do entanglement e usar um JDialog e deixá-lo como modal.

Por que o conteúdo que está adicionado no JFrame B não pode ser passado para o JDialog?

D

Eric Yuzo, na verdade ele pode ser passado para um jDialog, só que tem muita coisa no meu jframe, tipo, tenho uma JtabbedPane… enfim tem muita coisa, porém se for o caso de ter que passar para um JDialog eu dou um jeito.
Mas valeu pela dica

Eric_Yuzo

Assim como no JFrame, todo o conteúdo do JDialog fica adicionado no content pane. Não mudaria muita coisa na montagem da tela.

Você está utilizando o matisse do NetBeans para fazer as telas? E o problema é ter que fazer denovo? Se for o caso, você pode selecionar todos os componentes que estão no JFrame, depois copiar e colar no JDialog.

D

eric yuzo, qual tipo de jDialog eu tenho que usar para que eu possa colocar JTextField, JLabel, JTabbedPane, dentre outros?

Eric_Yuzo

javax.swing.JDialog.

No NetBeans está em Novo --> Formulário JDialog. Se não estiver aparecendo, escolha a Opção Novo --> Outros… --> Formulários GUI Swing --> Formulário JDialog.

Bom tenho quase certeza que o caminho é este.

D

Eric Yuzo, vlw cara deu certimmmm.
Me desculpa pela confusão, é que eu estava confundindo o JDialog com o JOptionPane… sabe como é, novato em java e as horas apontando para 00:58
Vlw

Eric_Yuzo

Então, acho que dos construtores do JDialog o que se encaixa mais seria este: JDialog(java.awt.Frame, boolean)

No primeiro parâmetro você passa o JFrame que será o “pai” do JDialog, e o segundo parâmetro recebe um boolean que define se o diálogo será modal. O fato de ser modal que faz com que o JFrame pai só possa ser acessado quando o JDialog for fechado.

[EDIT] Não tinha visto que você já tinha conseguido. Mas fica aí como dica pra quem precisar.

D

Eric Yuzo:
Então, acho que dos construtores do JDialogo que se encaixa mais seria este: JDialog(java.awt.Frame, boolean)

No primeiro parâmetro você passa o JFrame que será o “pai” do JDialog, e o segundo parâmetro recebe um boolean que define se a janela é modal. O fato da janela ser modal que faz com que o JFrame pai só possa ser acessado quando o JDialog for fechado.

[EDIT] Não tinha visto que você já tinha conseguido. Mas fica aí como dica pra quem precisar.

Sim, o JDialog é modal por padrão, pelo menos eu num mexi em nada para ele ficar modal, já a segunda parte ai de passar o Jframe pai do JDialog fiz eu mesmo e deu certo.
Vlw

Criado 16 de novembro de 2010
Ultima resposta 17 de nov. de 2010
Respostas 16
Participantes 5