Singleton no jInternalFrame

3 respostas
L

Tenho uma aplicação de JFrame com jInternalFrame e estou com problemas ao instanciar somente uma vez o jInternalFrame… após clicar no jMenuItem deverá abrir somente uma vez o jInternalFrame e por isso estou usando o padrão Singleton … só que quando clico no jMenuItem não está acontecendo nada … vou mandar o código.

Tenho 2 classes : a Tt e a Internodois ( sendo que a Tt faz o getInstance chamando a Internodois ) …

Aqui está um pedaço do código da classe Internodois que contem a jInternalFrame e o padrão Singleton

public class Internodois extends javax.swing.JInternalFrame {

    private static Internodois singleton = null ;

   
   private Internodois() {

        
        this.setVisible(true);

    }

    public static Internodois getInstance() {
        if (singleton == null) {
            singleton = new Internodois();
        }
        return singleton;
    }

Aqui está um pedaço do código da classe Tt que tem o getInstance

public class Tt extends javax.swing.JFrame {

    
    
    public Tt() {
        initComponents();
    }


// evento do jMenuItem que o usuario clica para abrir 

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        Internodois singleton = Internodois.getInstance();
            

        if (singleton.getParent() != jDesktopPane1) {
            jDesktopPane1.add(singleton);
       }
}

desde já agradeço

fiquem com Deus

3 Respostas

Ivan_Alves

Cara pode tentar assim por exemplo

//se for nulo então cria um novo objeto
if(internal1 == null){
    internal1 = new Internodois(); //Cria uma instancia
    jDesktopPane1.add(singleton); //adiciona o ao JDesktopPane
}
internal1.setVisible(true); //deixa visivel

try {//caso ele esteja minimizado então maximize-o
    internalAutor.setIcon(false);
} catch (PropertyVetoException ex) {}

tente isso ai

ViniGodoy

Usar singleton em interface gráfica é um caminho certo para você ter um OutOfMemoryError.

Já pensou que uma das desvantagens do singleton é que ele também nunca é elegivel para garbage collection?

L

o que você me aconselharia, no caso de abrir o jInternalFrame somente uma vez e abrir novamente a mesma só quando eu fechasse ???

Criado 27 de junho de 2011
Ultima resposta 27 de jun. de 2011
Respostas 3
Participantes 3