Olá pessoal…
Faço parte de uma equipe de desenvolvimento e estou com uma dúvida sobre desempenho em GUI Java!
No projeto que faço parte existe um software desktop que utiliza CardLayout para manipulação das telas a serem exibidas.
Pois bem, atualmente temos algo em torno de 13 JPanel diferentes, que são instaciados em tempo de compilação e adicionados ao JPanel principal, como a seguir:
JPanel showPanel = new JPanel();
showPanel.setLayout(new CardLayout());
...
JPanel tela1 = new JPanel();
showPanel.add(tela1, "tela1");
JPanel tela2 = new JPanel();
showPanel.add(tela2, "tela2");
...
JPanel tela13 = new JPanel();
showPanel.add(tela13, "tela13");
Minha dúvida: Fazer isso é “caro” para o sistema em termos de desempenho (os clientes dispõe de máquinas bem razoáveis), ou não existe problema em se fazer isso?
Outra solução que eu vejo seria a seguinte:
Criar um builder de JPanel, e a cada solicitação do menu do sistema, instanciar o JPanel referente e colocá-lo num mapa. Assim dessa forma eu não teria que criar todos os objetos e setá-los no JPanel principal, só os que necessariamente irei precisar…
[code]public class BuilderPanel {
static Map<String, JPanel> map;
static {
map = new HashMap<String, JPanel>();
}
public static JPanel getPanel(String nome) {
if (map.get(nome) == null) {
Class<?> classe = Class.forName(nome);
JPanel obj = (JPanel) classe.newInstance();
map.put(nome, obj);
}
return map.get(nome);
}
}//BuilderPanel
[/code]
Depois no [i]actionPerformed(ActionEvent e)[/i] eu faria a adição ao JPanel principal somente dos JPanel secundários que foram solicitados!
public void actionPerformed(ActionEvent e) {
JPanel panel = BuilderPanel.getPanel(jPanelSolicitado);
showPanel.add(panel, obterNomeTela(panel));
CardLayout layout = (CardLayout) (showPanel.getLayout());
layout.show(showPanel, jPanelSolicitado);
}//actionPerformed
Então… Qual o melhor estratégia das duas opções?