O código funcionou mas,
Estou com dúvidas de como utilizar o padrão de projeto singleton.
Eu preciso passar o objeto Usuario como parâmetro para a Janela
E não sei se é uma forma correta implementar o método para criar o objeto desta forma:
public static synchronized JanelaBanco getInstance(Usuario usuario)
pois só vi até hoje singletons com métodos sem argumentos como
getInstance()
package depto.banco;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Locale;
import javax.swing.JInternalFrame;
import depto.aop.AOP;
import depto.aop.gui.FocusTabListener;
import depto.usuario.Usuario;
@SuppressWarnings("serial")
public class JanelaBanco extends JInternalFrame {
private BancoHandle bancoHandle;
private PanelBanco panelBanco;
private Usuario usuario;
private static JanelaBanco janelaBanco;
public static synchronized JanelaBanco getInstance(Usuario usuario){
if (JanelaBanco.janelaBanco == null){
janelaBanco = new JanelaBanco(usuario) ;
}
return janelaBanco;
}
private JanelaBanco(final Usuario usuario) {
super(null, false, true, false, true);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
try {
this.usuario = usuario;
AOP.setLocale(getLocale());
inicializarGui();
inicializarHandle();
@SuppressWarnings("unused")
final FocusTabListener focusTabListener = new FocusTabListener(this);
} catch (final Exception e) {
e.printStackTrace();
}
}
public BancoHandle getBancoHandle() {
return bancoHandle;
}
@Override
public Locale getLocale() {
return usuario.getLocale();
}
public PanelBanco getPanelBanco() {
return panelBanco;
}
public Usuario getUsuario() {
return usuario;
}
private void inicializarGui() {
setTitle(AOP.getMessage("Bancos"));
setSize(445, 265);
setPreferredSize(new Dimension(445, 265));
setMinimumSize(new Dimension(445, 265));
setLayout(new BorderLayout());
panelBanco = new PanelBanco(this);
add(panelBanco, BorderLayout.CENTER);
setVisible(true);
}
private void inicializarHandle() {
bancoHandle = new BancoHandle(this);
panelBanco.inicializarHandle();
panelBanco.getBancoHandle().carregarReg();
addInternalFrameListener(bancoHandle.new JanelaHandle());
}
}
private depto.banco.JanelaBanco janelaBanco;
janelaBanco = depto.banco.JanelaBanco.getInstance(usuario);