Alguém sabe como não deixar as janelas irem para trás da janela principal da aplicação?
Por exemplo, quando eu abro a aplicação eu terei uma janela principal que conterá os botões e menus para chamar as outras janelas. Quando eu chamo uma nova janela(JFrame ou JDialog) a partir do JFrame principal se eu clicar no JFrame principal a nova janela se esconde atrás. Eu preciso que ela sempre fica acima do principal e se caso eu minimize o JFrame principal essa janela também minimize junto.
Um exemplo desse tipo de janela é a janela de propriedades do NetBeans. Quando agente clica com o botão direito do mouse em um componente e vai em propriedades, a janela que abre ela sem fica acima da janela principal do NetBeans e se agente minimizar o NetBeans ela minimiza junto.
Bem quanto a janela você pode usar o método .setAlwaysOnTop(true); no seu JFrame ou JDialog(modal=false). Quanto a minimizar você terá que adicionar um evento para capturar a ação de minimizar e então minimizar as janelas adicionais.
Ivan Alves, eu também preciso fazer a mesma coisa que o j_jose. Coloquei o método que você disse .setAlwaysOnTop(true), só que tive um problema.
Eu também criei uma JFrame principal onde chamo os outros frames, com esse método, o foco fica no frame chamado atravez do principal, só que se dentro desse frame eu precisar chamar outro frame não dá, ele fica por cima.
[quote=ThiagoHonorato]Ivan Alves, eu também preciso fazer a mesma coisa que o j_jose. Coloquei o método que você disse .setAlwaysOnTop(true), só que tive um problema.
Eu também criei uma JFrame principal onde chamo os outros frames, com esse método, o foco fica no frame chamado atravez do principal, só que se dentro desse frame eu precisar chamar outro frame não dá, ele fica por cima.
Será que existe outro método pra fazer isso?[/quote]
ThiagoHonorato se eu entendi direito o seu caso acho que esse método já resolve isso, já que você pode inseri-lo nas outras janelas que seu frame principal chamar.
Quando você inseri essa propriedade em 2 janelas, por exemplo, ele se sobrepõe a qualquer frame que você não tenha aplicado-o porém quando existe outro frame que tenha a mesma propriedade setada um se sobrepõe ao outro, dependendo do último frame focado.
Se eu setar .setAlwaysOnTop(true) esse JFrame vai ficar acima de todos os outros programas. Tipo se eu abrir um editor de texto por exemplo o Frame vai ficar por cima também. O que não acontece com a janela de propriedades do NetBenas como falei
j_jose verdade, esse método sobreboe até as janelas de outros programas dependendo do sistema(no meu caso windows 7). Caso você não queira isso use um JFrame como janela principal e JDialog(modal = false) como janela segundária e não precisa usar o método setAlwaysOnTop(true) já que o padrão é false.
@author Ivan
*/
public class TesteAbrirJDialog {
JFrame frame;
public static void main(String [] args){
new TesteAbrirJDialog().iniciar();
}
private void iniciar() {
//cria um JFrame para janela principal
frame = new JFrame(“Janela Principal”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//adiciona um JButton para abrir JDialog
JButton buttonDialog = new JButton("Abrir Dialog");
buttonDialog.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
abrirJDialog();
}
});
frame.add(buttonDialog); //adiciona JButton
frame.setSize(300, 200);
frame.setVisible(true);
}
private void abrirJDialog(){
/* Observação: o JFrame deve ser atribuido ao
* seu JDialog assim como o parametro modal
* todos esses foram passados no construtor
* da classe JDialog
*/
JDialog dialog = new JDialog(frame, “Dialog Teste”, false);
dialog.setSize(250, 150);
dialog.setVisible(true);
}
}[/code]