[Dúvida]JInternalFrame e setVisible

1 resposta
J

Estou com uma dúvida em relação ao setVisible para exibir a minha JInternalFrame depois de eu clicar em um botão. O problema é o seguinte:

JInternalFrame agasalhos = new Agasalhos();
desktop.add(agasalhos);

Se eu faço isso dentro do actionPerformed e coloco o setVisible pra true na classe Agasalhos, o programa funciona porém a janela do programa abe e aparece sem nada (sim, em branco) e estranhamente eu tenho que minimizá-la ou maximizá-la pra aparecer todos os botões corretamente mas depois disso funciona (sendo q se eu deixar o actionPerformed sem nada, o programa funciona direito exibindo todos os botões, quando adiciono isso que dá problema).

agasalhos.setVisible(true);

Se eu faço isso dentro do actionPerformed e

JInternalFrame agasalhos = new Agasalhos();
desktop.add(agasalhos);

na classe Main, ele não aceita dizendo “cannot be resolved” (o que era de se esperar). Tem alguma forma correta então de chamar esse setVisible no actionPerformed do meu botão?

1 Resposta

thiago.correa

Tá bem confusa a tua explicação, mas segue um código com um exemplo que eu fiz usando o JButton para abrir uma janela interna

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenuBar;
import javax.swing.JTextField;


public class Class1 extends JFrame {   
    JDesktopPane jdp = new JDesktopPane();   
    JInternalFrame jif;
    JMenuBar bar;
    JButton button;
  
    public Class1() {   
        this.setLayout(new BorderLayout());       
        button = new JButton("Abre");
        bar = new JMenuBar();
        bar.add(button);
         
        
        this.add(bar,BorderLayout.NORTH);
        this.add(jdp, BorderLayout.CENTER);   
        button.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e) {
                        jif = new JIF();  
                        jdp.add(jif);
                    }
                });
           
           
        this.setVisible(true);   
        this.pack();   
        this.repaint();   
           
    }   
  
    public static void main(String[] args) {   
       Class1 c = new Class1();   
    }   
       
       
}   
  
class JIF extends JInternalFrame {   
  
    JTextField text;   
    public JIF() {   
        text = new JTextField();   
        this.add(text);   
        this.setVisible(true);   
        this.setSize(100,100);   
    }   
}
Criado 5 de junho de 2009
Ultima resposta 5 de jun. de 2009
Respostas 1
Participantes 2