JInternalFrame Modal

2 respostas
M

http://developer.java.sun.com/developer/JDCTechTips/2001/tt1220.html

2 Respostas

vertuam

Da para fazer assim:

// Codigo para Modal 
    static class ModalAdapter 
        extends InternalFrameAdapter { 
            Component glass; 
        public ModalAdapter(Component glass) { 
            this.glass = glass; 
            MouseInputAdapter adapter = new MouseInputAdapter(){}; 
            glass.addMouseListener(adapter); 
            glass.addMouseMotionListener(adapter); 
        } 
        public void internalFrameClosed( 
            InternalFrameEvent e) { 
            glass.setVisible(false); 
        } 
    } 
    // Fim para Modal

ai voce chama o jinternalframe assim:

public void actionPerformed(ActionEvent e) { 
            Cadastro_Academico Cadastro = new Cadastro_Academico(); 
            JPanel glass = new JPanel(); 
            glass.setLayout(null); 
            glass.setOpaque(false); 
            Cadastro.addInternalFrameListener(new ModalAdapter(glass)); 
            glass.add(Cadastro); 
            setGlassPane(glass); 
            Cadastro.getContentPane(); 
            glass.setVisible(true); 
            Cadastro.setVisible(true); 
            } 
        }; 
        jButton1.addActionListener(showModal1);

t+

A

Na minha opnião, essa é a melhor maneira pra trabalhar com internalframe modais.
únicos problemas :

  • o usuário não consegue fechar o deskstoppane.
  • não dá pra colocar um botão default. Mas isso é fácil, acho que criar um keylistener resolve o problema …
    Devia ter um setModal() em InternalFrame, não acham ?
Criado 23 de junho de 2003
Ultima resposta 18 de ago. de 2004
Respostas 2
Participantes 3