Limitar apenas um InternalFrame por vez

4 respostas
H

Boa Tarde , gostaria de saber como eu faço para impedir que seja aberta mais de um internal frame ao mesmo tempo ou seja caso se clicado em um menu , Adicionar Cliente , que informe uma mensagem perguntando ao usuario se ele deseja sair do menu adicionar cliente , entrar no item remover cliente do menu .

import javax.swing.JFrame;

import javax.swing.JMenuItem;

import javax.swing.JMenu;

import javax.swing.JMenuBar;
import java.awt.event.<em>;

import javax.swing.</em>;

import java.awt.*;

public class Tela extends JFrame {

private JDesktopPane desktoppane = new JDesktopPane(); 

public Tela() { 
    super(" PROGRAMA TESTE "); 
    inicializa();
    setExtendedState(MAXIMIZED_BOTH);
    show();

}

private void inicializa() {
    
  // cria a barra de menu 
  JMenuBar menuBar = new JMenuBar();
  
  // cria o menu na barra 
  JMenu menu1 = new JMenu("Janelas"); 
  
  // cria o item de menu 
  JMenuItem menuItem1 = new JMenuItem("Inserir"); 
  
  // adiciona o evento para clique no menu "INSERIR" 
  menuItem1.addActionListener( 
        new ActionListener(){ 
           public void actionPerformed(ActionEvent e){ 
              // Cria um novo InternalFrame 
              JInternalFrame frame = new JInternalFrame("Janela "); 
              // e adiciona no desktop 
              desktoppane.add(frame); 
              // tamanho... 
              frame.setSize(200,200); 
              // se pode ser fechado (X)... 
              frame.setClosable(true); 
              frame.setMaximizable(true); 
              frame.setIconifiable(true); 
              frame.setResizable(true); 
              // mostra 
              frame.show(); 
           } 
        }); 
  //adiciona o item de menu no menu 
  menu1.add(menuItem1);       
  // e o menu na barra de menu 
  menuBar.add(menu1); 
  // adiciona menu na janela principal 
  setJMenuBar(menuBar); 
   
  // Adiciona o desktoppane 
  getContentPane().add(desktoppane, BorderLayout.CENTER); 
  
  
  /* Menu Cadastro */
  
  
  // cria o menu na barra 
  JMenu menuCad = new JMenu("Cadastro"); 
  
  // cria o item de menu 
  JMenuItem cadAd = new JMenuItem("Adicionar Cliente"); 
  
  // adiciona o evento para clique no menu "Adicionar Cliente" 
  cadAd.addActionListener( 
        new ActionListener(){ 
           public void actionPerformed(ActionEvent e){ 
              // Cria um novo InternalFrame 
              JInternalFrame frame = new JInternalFrame("Cadastro de Cliente "); 
              // e adiciona no desktop 
              desktoppane.add(frame); 
              // tamanho... 
              frame.setSize(200,200); 
              // se pode ser fechado (X)... 
              frame.setClosable(true); 
              frame.setMaximizable(true); 
              frame.setIconifiable(true); 
              frame.setResizable(true); 
              // mostra 
              frame.show(); 
           } 
        });

// cria o item de menu 
  JMenuItem cadRem = new JMenuItem("Remover Cliente");

// adiciona o evento para clique no menu "Adicionar Cliente" 
  cadRem.addActionListener( 
        new ActionListener(){ 
           public void actionPerformed(ActionEvent e){ 
              // Cria um novo InternalFrame 
              JInternalFrame frame = new JInternalFrame("Remover Cadastro do Cliente "); 
              // e adiciona no desktop 
              desktoppane.add(frame); 
              // tamanho... 
              frame.setSize(200,200); 
              // se pode ser fechado (X)... 
              frame.setClosable(true); 
              frame.setMaximizable(true); 
              frame.setIconifiable(true); 
              frame.setResizable(true); 
              // mostra 
              frame.show(); 
           } 
        });

  //adiciona o item de menu no menu 
  menuCad.add(cadAd);
//adiciona o item de menu no menu 
  menuCad.add(cadRem);       
  // e o menu na barra de menu 
  menuBar.add(menuCad); 
  // adiciona menu na janela principal 
  setJMenuBar(menuBar); 
   
  // Adiciona o desktoppane 
  getContentPane().add(desktoppane, BorderLayout.CENTER);
}

public static void main(String args[]) {

new Tela().show();

}
}

[color=“white”][/color][color=“darkblue”][/color]

4 Respostas

brlima

Bem, uma possibilidade é vc remover todos os intFra que estao dentro do DesktopPane. Ou habilitar o cara abrir outro frame somente se o anterior foi fechado. :smiley:

H

Será que voce poderia alterar este codigo com isto que voce está me falando , para poder abrir outra janela somente se a outra estiver fechada , e como eu faço para retirar de dentro do desktopPane .

Vitor hugo
[email removido]

brlima

“hugov”:
Será que voce poderia alterar este codigo com isto que voce está me falando , para poder abrir outra janela somente se a outra estiver fechada , e como eu faço para retirar de dentro do desktopPane .

Vitor hugo
[email removido]

Dá uma olhada na API do JDesktopPane, deve ter um método pra remover, é coisa simples.

Mas se quiser mesmo uma “consultoria” agente faz um precinho camarada :smiley: rssssss…

M

desktoppane.removeAll();

Coloque isso antes de vc instanciar o JInternalFrame.

Criado 8 de setembro de 2004
Ultima resposta 17 de out. de 2004
Respostas 4
Participantes 3