Pessoal, bom dia.
Estou com um problema de performance na minha aplicação Eclipse. Desenvolvi algumas classes separadas, onde cada classe é uma tela do sistema.
O problema agora é que preciso juntar todas elas e criei uma classe Principal. Essa principal só tem um JMenu com alguns JMenuItem’s que cada um chama a sua classe. O problema é que ficou muito lento para abrir a tela. Tentei colocar a declaração da instancia das classes logo no começo da classe Principal e somente executar o método setVisible das classes o evento do JMenuItem, só que com isso, a classe Principal que passou a demorar para abrir.
Alguem tem outra sugestão?
Abs.
Passa o código amigo,fica mais fácil pra entender e poder te ajudar.
Um abraço
[code]package myprojects.sasi;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JInternalFrame;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class Principal extends JFrame {
private Consulta_Chamados Chamados = new Consulta_Chamados();
private Alocador Aloca = new Alocador();
private Agenda Agenda = new Agenda();
private Login Log;
private JDesktopPane jDesktopPane = null;
private JPanel jContentPane = null;
private JLabel jLabel1 = null;
private JFrame jFrame = null;
public String nome_login = “”;
public String nivel_login = “”;
private JLabel jLbl_info_login = null;
protected JInternalFrame f;
private JMenuBar getbar() {
JMenuBar bar = new JMenuBar(); //cria a barra de Menus.
//cria menu Sistema
JMenu SistemaMenu = new JMenu ( “Sistema” );
SistemaMenu.setMnemonic(‘S’);
//cria o sub-menu Login
JMenuItem LoginMenu = new JMenuItem (“Login”);
LoginMenu.setMnemonic(‘L’);
LoginMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{
exibe_login();
}
}
);
SistemaMenu.add(LoginMenu);
//cria menu Sair
SistemaMenu.setMnemonic(‘S’);
//cria o sub-menu Sair
JMenuItem SairMenu = new JMenuItem (“Sair”);
SairMenu.setMnemonic(‘r’);
SairMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{
System.exit(0);
}
}
);
SistemaMenu.add(SairMenu);
bar.add(SistemaMenu); //Adiciona menu Sair
//cria menu Cadastros e item de menu Clientes
JMenu CadastrosMenu = new JMenu ( "Cadastros" );
CadastrosMenu.setMnemonic('C');
JMenuItem ClientesMenu = new JMenuItem ("Clientes");
ClientesMenu.setMnemonic('l');
ClientesMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{
//Aqui será a chamada da tela de cadastro de clientes
}
}
);
CadastrosMenu.add(ClientesMenu);
bar.add(CadastrosMenu); //Adiciona menu Cadastros
//cria menu Operações e ites de menu Alocação/Triagem e Agenda
JMenu OperacoesMenu = new JMenu ( "Operações" );
OperacoesMenu.setMnemonic('O');
JMenuItem AlocaMenu = new JMenuItem ("Alocação/Triagem");
AlocaMenu.setMnemonic('A');
AlocaMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{ //Verifica se usuário está logado e se é nível ADM
if (UserLogado.getUser().equals(""))
{
f = new JInternalFrame();
JOptionPane.showMessageDialog(f,
"Por favor, realize Login",
"Permissão Acesso",
JOptionPane.ERROR_MESSAGE);
System.out.println("Usuário: " + UserLogado.getUser() +" Grupo: " + UserLogado.getGrupo());
}
else
{
//Verifica se usuário tem direito de ADM
if(UserLogado.getGrupo().equals("ADM"))
{
jDesktopPane.add(Aloca,null);
Aloca.setVisible(true);
System.out.println("Usuário: " + UserLogado.getUser() +" Grupo: " + UserLogado.getGrupo());
}
else
{
f = new JInternalFrame();
JOptionPane.showMessageDialog(f,
"Opção disponível somente para usuários ADM",
"Permissão Acesso",
JOptionPane.ERROR_MESSAGE);
System.out.println("Usuário: " + UserLogado.getUser() +" Grupo: " + UserLogado.getGrupo());
}
}
}
}
);
OperacoesMenu.add(AlocaMenu);
JMenuItem AgendaMenu = new JMenuItem ("Agenda");
AgendaMenu.setMnemonic('g');
AgendaMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{
// Verifica se usuário está logado
if (UserLogado.getUser().equals(""))
{
f = new JInternalFrame();
JOptionPane.showMessageDialog(f,
“Por favor, realize Login”,
“Permissão Acesso”,
JOptionPane.ERROR_MESSAGE);
}
else
{
jDesktopPane.add(Agenda,null);
Agenda.setVisible(true);
}
}
}
);
OperacoesMenu.add(AgendaMenu);
bar.add(OperacoesMenu); //Adiciona menu Operações
//cria menu Consulta e item de menu Consulta de Chamados
JMenu ConsultasMenu = new JMenu ( "Consultas" );
ConsultasMenu.setMnemonic('n');
JMenuItem ChamadosMenu = new JMenuItem ("Chamados");
ChamadosMenu.setMnemonic('A');
ChamadosMenu.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent a)
{
// Verifica se usuário está logado
if (UserLogado.getUser().equals(""))
{
f = new JInternalFrame();
JOptionPane.showMessageDialog(f,
“Por favor, realize Login”,
“Permissão Acesso”,
JOptionPane.ERROR_MESSAGE);
}
else
{
jDesktopPane.add(Chamados,null);
Chamados.setVisible(true);
}
}
}
);
ConsultasMenu.add(ChamadosMenu);
bar.add(ConsultasMenu); //Adiciona menu Consultas
return bar;
}
private JDesktopPane getJDesktopPane() {
if (jDesktopPane == null) {
jDesktopPane = new JDesktopPane();
jDesktopPane.setBounds(new Rectangle(3, 2, 1010, 677));
exibe_login();
}
return jDesktopPane;
}
private void exibe_login()
{
Log = new Login();
jDesktopPane.add(Log,null);
Log.setVisible(true);
Log.setBounds(new Rectangle(284, 162, 395, 209));
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJDesktopPane(), null);
}
return jContentPane;
}
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setJMenuBar(getbar());
jFrame.setSize(1024, 768);
jFrame.setContentPane(getJContentPane());
jFrame.setTitle(“SASI - SISTEMA DE ALOCAÇÃO DE RECUROS”);
jContentPane.setBackground(Color.white);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
jFrame.setBounds((screenSize.width-1024)/2, (screenSize.height-768)/2, 1024, 768);
}
return jFrame;
}
/**
- This method initializes jLbl_info_login
-
@return javax.swing.JLabel
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Principal application = new Principal();
application.getJFrame().setVisible(true);
}
});
}
}[/code]
Vou analizar e até o fim do dia te respondo o que pode ser feito!!!
vlw Gustavo.
vlw Gustavo.
MarcBosso,
vou analizar essa sua classe com mais calma,em casa,estou no meu trabalho,me passa seu email que eu te passo uma outra metodologia que eu uso paraa criação de aplicações Desktop como essa.
É que o tempo hoje está apertado,as pelo que ví,achei interessante sua aplicação!!!
enviei no seu e-mail,
abs