jToolBar não atualiza

9 respostas
javafront-end
R

Olá pessoal.
Sou iniciante em java e estou fazendo um programa java desktop
tenho o seguinte metodo na tela principal que exibe ou ocultas os botões que estão na jToolBar

public void fecharJanela(JInternalFrame jIF) {
    jIF.dispose();
    jDesktopPane.remove(jIF);
    DesabilitaTodosBatao();
    if (existeJanelaAberta() == false) {
        criaBotaoSair();
    } else {
        System.out.println("existe janela aberta");
    }
}    

public void DesabilitaTodosBatao() {
        jBSair.setVisible(false);
        jBNovo.setVisible(false);
        jBCancelar.setVisible(false);
        jBExcluir.setVisible(false);
        jBLocalizar.setVisible(false);
        jBSalvar.setVisible(false);
        jSeparador1.setVisible(false);
        jSeparador2.setVisible(false);
        jSeparador3.setVisible(false);
        jSeparador4.setVisible(false);
        jTBFerramentas.repaint();
   }

Na ToolBar tem um botão para fechar a janela, um jInternalFrame, o evento do botão chama a interface AcoesBotoes que é implementada pela janela interna. A janela interna chama o método fecharJanela, onde é fechado a janela e chamado a função de DesabilitaTodosBatao.

A janela está sendo fechada mas os botões não desabilitam. O código não gera erros.
Observação: se eu chama o método DesabilitaTodosBatao direto no evento do click do botão ele funciona

9 Respostas

R

Alguém pode me ajudar?
Sou novo pro aqui, alguem pode me dizer pq niguem atende a minha duvida? o que tenho que fazer?

S
public void fecharJanela(JInternalFrame jIF) {
    jIF.dispose();
    jDesktopPane.remove(jIF);
    System.out.println("Aqui");
    DesabilitaTodosBatao();
    System.out.println("Ali");
    if (existeJanelaAberta() == false) {
        criaBotaoSair();
    } else {
        System.out.println("existe janela aberta");
    }
}

O que isso exibe?
É estranho o método disparado pelo botão ter retorno e o disparado por outro método não funcionar, pensando de maneira bem ignorante imagino que algum objeto do método fecharJanela() pode estar nulo e nem chega a mostrar um exception especifica porque há tratamento em alguma outra parte do código.

Uma outra forma de verificar é colocar esse método em um try-catch ou forçar ele a "replicar a exception

public void fecharJanela(JInternalFrame jIF) {
try{
    jIF.dispose();
    jDesktopPane.remove(jIF);
    DesabilitaTodosBatao();
    if (existeJanelaAberta() == false) {
        criaBotaoSair();
    } else {
        System.out.println("existe janela aberta");
    }
}catch(Exception ex){
System.out.println(ex);
}
}
R

Então, obrigado por me ajudar
No frame principal tenho uma jToolBar com vários botões que são padrão para todas as janelas, um deles é o de fechar a janela jInternalFrame.
A ação desse botão se comunica com uma interface sendo a mesma implementada por todas as janelas internas que possuirão o implementação como essa

@Override
public void sair() {
    principalView.fecharJanela(this);
}

Essa implementação chama esse método genérico que é responsável pro fechar a janela, esconder os botões da ToolBar e se não tiver masi janelas abertas criar o botão na ToolBar para sair do sistema.

Se eu chamar o metodo DesabilitaTodosBotoes direto no evento do botão ele funciona, mas não é isso que quero.
A janela está sendo fechada.

Me parece falta de atualização da tela principal pq coloquei uns system.out.print e ele executa até o final.
Andei pesquisando e achei isso SwingUtilities.invokeLater(new Runnable() mas não ta funcionando.

Pra complementar o metodo do click do botão é o metodo fechar janela e desabilitar estão no mesmo frame.

S

tenta fazer isso:

public void DesabilitaTodosBatao() {
        jBSair.setVisible(false);
        jBNovo.setVisible(false);
        jBCancelar.setVisible(false);
        jBExcluir.setVisible(false);
        jBLocalizar.setVisible(false);
        jBSalvar.setVisible(false);
        jSeparador1.setVisible(false);
        jSeparador2.setVisible(false);
        jSeparador3.setVisible(false);
        jSeparador4.setVisible(false);
        jTBFerramentas.revalidate(); //adiciona isso...
        jTBFerramentas.repaint();
   }
R

Cara, ja tentei fazer isso, tanto na jToolBar com na janela inteira e nada está funcionando

R

Alguem sabe o que pode estar acontecendo?

S

Você pode colocar o código da classe inteira? estranho nada disso funcionar…

R

Segue o codigo da classe principal onde possui as funções genéricas. Os botões possuem imagens

public class PrincipalView extends javax.swing.JFrame {

private javax.swing.JDesktopPane jDesktopPane;
public javax.swing.JToolBar jTBFerramentas;
public javax.swing.JToolBar jTBAlternaJanelas;
private javax.swing.JPanel jPEstatus;
private javax.swing.JMenu jMCadastro;
private javax.swing.JMenuItem jMICadClienteFornecedor;
private javax.swing.JMenuItem jMICadItem;
private javax.swing.JMenuItem jMIGerenciadorCompra;
private javax.swing.JMenuItem jMINotaFiscalEntrada;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenu jMenu5;
private javax.swing.JMenu jMenu6;
private javax.swing.JMenu jMenu7;
private javax.swing.JMenu jMenu8;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JPopupMenu.Separator jSeparator1;

//Botões da barra de tarrefa
public JButton jBSair;
private JButton jBSairSistema;
private JButton jBNovo;
private JButton jBLocalizar;
private JButton jBSalvar;
private JButton jBCancelar;
private JButton jBExcluir;
private JSeparator jSeparador1;
private JSeparator jSeparador2;
private JSeparator jSeparador3;
private JSeparator jSeparador4;

//botão do alternador de janela
private JButton jBAlternaJanela;

//Interface com as ações dos botoes
private AcoesBotoes acoesBotoes;

private static PrincipalView principalView;

public static PrincipalView getIntancia() {
    if (principalView == null) {
        principalView = new PrincipalView();
    }
    return principalView;
}

private PrincipalView() {
    initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jTBFerramentas = new javax.swing.JToolBar();
    jTBAlternaJanelas = new javax.swing.JToolBar();
    ImageIcon icon = new ImageIcon(getClass().getResource("/br/com/rene/view/imagem/images.jpg"));
    Image image = icon.getImage();
    jDesktopPane = new javax.swing.JDesktopPane() {
        @Override
        protected void paintComponent(Graphics g) {
            g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
        }
    };
    jPEstatus = new javax.swing.JPanel();

    jMenuBar1 = new javax.swing.JMenuBar();
    jMCadastro = new javax.swing.JMenu();
    jMenu3 = new javax.swing.JMenu();
    jMICadClienteFornecedor = new javax.swing.JMenuItem();
    jSeparator1 = new javax.swing.JPopupMenu.Separator();
    jMenu1 = new javax.swing.JMenu();
    jMICadItem = new javax.swing.JMenuItem();
    jMenuItem1 = new javax.swing.JMenuItem();
    jMenu2 = new javax.swing.JMenu();
    jMINotaFiscalEntrada = new javax.swing.JMenuItem();
    jMIGerenciadorCompra = new javax.swing.JMenuItem();
    jMenu6 = new javax.swing.JMenu();
    jMenu7 = new javax.swing.JMenu();
    jMenuItem5 = new javax.swing.JMenuItem();
    jMenu5 = new javax.swing.JMenu();
    jMenuItem3 = new javax.swing.JMenuItem();
    jMenuItem4 = new javax.swing.JMenuItem();
    jMenu8 = new javax.swing.JMenu();
    jMenu4 = new javax.swing.JMenu();
    jMenuItem2 = new javax.swing.JMenuItem();

    //Inicializando botões do TollBar
    jBSair = new JButton();
    jBSair.setVisible(false);
    jBSairSistema = new JButton();
    jBSairSistema.setVisible(false);
    jBNovo = new JButton();
    jBNovo.setVisible(false);
    jBLocalizar = new JButton();
    jBLocalizar.setVisible(false);
    jBSalvar = new JButton();
    jBSalvar.setVisible(false);
    jBCancelar = new JButton();
    jBCancelar.setVisible(false);
    jBExcluir = new JButton();
    jBExcluir.setVisible(false);

    jSeparador1 = new JSeparator();
    jSeparador1.setVisible(false);
    jSeparador2 = new JSeparator();
    jSeparador2.setVisible(false);
    jSeparador3 = new JSeparator();
    jSeparador3.setVisible(false);
    jSeparador4 = new JSeparator();
    jSeparador4.setVisible(false);

    jSeparador1.setPreferredSize(new java.awt.Dimension(10, 0));
    jSeparador2.setPreferredSize(new java.awt.Dimension(10, 0));
    jSeparador3.setPreferredSize(new java.awt.Dimension(10, 0));
    jSeparador4.setPreferredSize(new java.awt.Dimension(10, 0));

    ImageIcon img = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Voltar.png"));
    img.setImage(img.getImage().getScaledInstance(40, 40, 100));
    jBSairSistema.setIcon(img);
    jBSairSistema.setVisible(false);
    jBSairSistema.setToolTipText("Fechar o sistema");
    jBSairSistema.addActionListener((ActionEvent e) -> {
        fecharSistema();
    });

    ImageIcon img0 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Voltar.png"));
    img0.setImage(img0.getImage().getScaledInstance(40, 40, 100));
    jBSair.setIcon(img0);
    jBSair.setVisible(false);
    jBSair.setToolTipText("Fechar a janela");
    jBSair.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.sair();
        } else {
            System.out.println("acoesBotoes sair nulo");
        }
    });
    ImageIcon img1 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Novo.png"));
    img1.setImage(img1.getImage().getScaledInstance(40, 40, 100));
    jBNovo.setIcon(img1);
    jBNovo.setVisible(false);
    jBNovo.setToolTipText("Novo");
    jBNovo.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.novo();
            HabilitaDesabilitaBatao(false);
        } else {
            System.out.println("acoesBotoes novo nulo");
        }
    });
    ImageIcon img2 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Cancelar.png"));
    img2.setImage(img2.getImage().getScaledInstance(40, 40, 100));
    jBCancelar.setIcon(img2);
    jBCancelar.setVisible(false);
    jBCancelar.setToolTipText("Cancelar");
    jBCancelar.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.cancelar();
            HabilitaDesabilitaBatao(true);
        } else {
            System.out.println("acoesBotoes camcelar nulo");
        }
    });
    ImageIcon img3 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Excluir.png"));
    img3.setImage(img3.getImage().getScaledInstance(40, 40, 100));
    jBExcluir.setIcon(img3);
    jBExcluir.setVisible(false);
    jBExcluir.setToolTipText("Excluir");
    jBExcluir.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.excluir();
        } else {
            System.out.println("acoesBotoes excluir nulo");
        }
    });
    ImageIcon img4 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Localizar.png"));
    img4.setImage(img4.getImage().getScaledInstance(40, 40, 100));
    jBLocalizar.setIcon(img4);
    jBLocalizar.setVisible(false);
    jBLocalizar.setToolTipText("Localizar");
    jBLocalizar.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.localizar();
        } else {
            System.out.println("acoesBotoes localizar nulo");
        }
    });
    ImageIcon img5 = new javax.swing.ImageIcon(getClass().getResource("/br/com/rene/view/imagem/Salvar.png"));
    img5.setImage(img5.getImage().getScaledInstance(40, 40, 100));
    jBSalvar.setIcon(img5);
    jBSalvar.setVisible(false);
    jBSalvar.setToolTipText("Salvar");
    jBSalvar.addActionListener((ActionEvent evt) -> {
        if (acoesBotoes != null) {
            acoesBotoes.salvar();
            HabilitaDesabilitaBatao(true);
        } else {
            System.out.println("acoesBotoes salvar nulo");
        }
    });
    montaTBFerramentas();

    setTitle("Rene - ERP Basic");
    setLocationByPlatform(true);

    setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
    this.setExtendedState(MAXIMIZED_BOTH);

    jDesktopPane.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));

    jPEstatus.setBackground(javax.swing.UIManager.getDefaults().getColor("CheckBox.light"));
    jPEstatus.setBorder(javax.swing.BorderFactory.createEtchedBorder(new java.awt.Color(204, 204, 204), null));

    javax.swing.GroupLayout jPEstatusLayout = new javax.swing.GroupLayout(jPEstatus);
    jPEstatus.setLayout(jPEstatusLayout);
    jPEstatusLayout.setHorizontalGroup(
            jPEstatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPEstatusLayout.createSequentialGroup()
                    .addGap(100, 1151, Short.MAX_VALUE))
    );
    jPEstatusLayout.setVerticalGroup(
            jPEstatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    );

    jTBAlternaJanelas.setBackground(new java.awt.Color(236, 238, 241));
    jTBAlternaJanelas.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
    jTBAlternaJanelas.setFloatable(false);
    jTBAlternaJanelas.setRollover(true);

    jMenuBar1.setBackground(new java.awt.Color(207, 220, 232));

    jMCadastro.setText("Cadastros");

    jMenu3.setText("Clientes e Foernecedores");

    jMICadClienteFornecedor.setText("Cadastro de Cliente e Fonecedor");
    jMICadClienteFornecedor.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMICadClienteFornecedorActionPerformed(evt);
    });
    jMenu3.add(jMICadClienteFornecedor);

    jMCadastro.add(jMenu3);
    jMCadastro.add(jSeparator1);

    jMenu1.setText("Itens");

    jMICadItem.setText("Cadastro de Item");
    jMICadItem.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMICadItemActionPerformed(evt);
    });
    jMenu1.add(jMICadItem);

    jMenuItem1.setText("Unidade");
    jMenuItem1.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMenuItem1ActionPerformed(evt);
    });
    jMenu1.add(jMenuItem1);

    jMCadastro.add(jMenu1);

    jMenuBar1.add(jMCadastro);

    jMenu2.setText("Cmpras");

    jMINotaFiscalEntrada.setText("Nota Fiscal de Entrada");
    jMINotaFiscalEntrada.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMINotaFiscalEntradaActionPerformed(evt);
    });
    jMenu2.add(jMINotaFiscalEntrada);

    jMIGerenciadorCompra.setText("Gerenciador de Compras");
    jMIGerenciadorCompra.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMIGerenciadorCompraActionPerformed(evt);
    });
    jMenu2.add(jMIGerenciadorCompra);

    jMenuBar1.add(jMenu2);

    jMenu6.setText("Vendas");
    jMenuBar1.add(jMenu6);

    jMenu7.setText("Estoque");

    jMenuItem5.setText("de Compra");
    jMenu7.add(jMenuItem5);

    jMenuBar1.add(jMenu7);

    jMenu5.setText("Financeiro");

    jMenuItem3.setText("Contas a Pagar");
    jMenu5.add(jMenuItem3);

    jMenuItem4.setText("Contas a Receber");
    jMenu5.add(jMenuItem4);

    jMenuBar1.add(jMenu5);

    jMenu8.setText("Relatórios");
    jMenuBar1.add(jMenu8);

    jMenu4.setText("Configurações");

    /*
    jMenuItem1.addActionListener((ActionEvent evt) -> {
        acoesBotoes = new Janela();
        abrirJanela(Janela.getIntancia());

    });*/
    jMenuItem2.setText("Gerênciar Usuários");
    jMenuItem2.addActionListener((java.awt.event.ActionEvent evt) -> {
        jMenuItem2ActionPerformed(evt);
    });
    jMenu4.add(jMenuItem2);

    jMenuBar1.add(jMenu4);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTBFerramentas, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPEstatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                    .addGap(1, 1, 1)
                    .addComponent(jDesktopPane)
                    .addGap(1, 1, 1))
            .addComponent(jTBAlternaJanelas, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jTBFerramentas, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jDesktopPane, javax.swing.GroupLayout.DEFAULT_SIZE, 453, Short.MAX_VALUE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTBAlternaJanelas, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(1, 1, 1)
                    .addComponent(jPEstatus, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE))
    );

    setSize(new java.awt.Dimension(1492, 614));
    setLocationRelativeTo(null);

    pack();
}// </editor-fold>                        

private void jMICadItemActionPerformed(java.awt.event.ActionEvent evt) {
    acoesBotoes = CadItemView.getIntancia();
    abrirJanela(CadItemView.getIntancia());
}

private void jMICadClienteFornecedorActionPerformed(java.awt.event.ActionEvent evt) {
    acoesBotoes = CadCliForView.getIntancia();
    //gerenciadorJanelas.abrirJanela(CadCliForView.getIntancia());
}

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    acoesBotoes = CadUnidadeView.getIntancia();
    abrirJanela(CadUnidadeView.getIntancia());
}

private void jMINotaFiscalEntradaActionPerformed(java.awt.event.ActionEvent evt) {
    //acoesBotoes = new LancNotaFiscalEntradaView();
    // gerenciadorJanelas.abrirJanela(LancNotaFiscalEntradaView.getIntancia());
}

private void jMIGerenciadorCompraActionPerformed(java.awt.event.ActionEvent evt) {
    //gerenciadorJanelas.abrirJanela(GerenciadorCompraView.getIntancia());
}

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
    acoesBotoes = CadUsuarioView.getIntancia();
    abrirJanela(CadUsuarioView.getIntancia());
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {

    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(PrincipalView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(() -> {
        new PrincipalView().setVisible(true);
    });
}

@Override
protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
        fecharSistema();
    }
    if (e.getID() == WindowEvent.WINDOW_OPENED) {
        criaBotaoSair();
    }
}

private void montaTBFerramentas() {
    jTBFerramentas.add(jBSairSistema);
    jTBFerramentas.add(jBSair);
    jTBFerramentas.add(jSeparador1);
    jTBFerramentas.add(jBNovo);
    jTBFerramentas.add(jSeparador2);
    jTBFerramentas.add(jBExcluir);
    jTBFerramentas.add(jSeparador3);
    jTBFerramentas.add(jBLocalizar);
    jTBFerramentas.add(jBSalvar);
    jTBFerramentas.add(jSeparador4);
    jTBFerramentas.add(jBCancelar);
}

private void HabilitaDesabilitaBatao(boolean habilitar) {
    jBSair.setVisible(habilitar);
    jBNovo.setVisible(habilitar);
    jBSalvar.setVisible(!habilitar);
    jBCancelar.setVisible(!habilitar);
    jBExcluir.setVisible(habilitar);
    jBLocalizar.setVisible(habilitar);
    jSeparador1.setVisible(habilitar);
    jSeparador2.setVisible(habilitar);
    jSeparador3.setVisible(habilitar);
    jSeparador4.setVisible(!habilitar);
    jTBFerramentas.repaint();
}

/*Não funciona quando chamado o clik do botão chama a interface AcoesBotão e essa chama a implementação
no CadItemView. CadItem view chama a função fechar janela desta classe q por sua vez chama esta função.
Caso eu chamar esta função de dentro desta chasse funciona ok
*/
public void DesabilitaTodosBatao() {
    jBSair.setVisible(false);
    jBNovo.setVisible(false);
    jBCancelar.setVisible(false);
    jBExcluir.setVisible(false);
    jBLocalizar.setVisible(false);
    jBSalvar.setVisible(false);
    jSeparador1.setVisible(false);
    jSeparador2.setVisible(false);
    jSeparador3.setVisible(false);
    jSeparador4.setVisible(false);
    jTBFerramentas.repaint();
    jTBFerramentas.revalidate();
    
   
}

private void abrirJanela(JInternalFrame jIF) {
    if (jIF.isVisible()) {
        try {
            jIF.toFront();
            jIF.setSelected(true);
            jIF.requestFocus(true);
        } catch (PropertyVetoException ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "ERRO ao mover a janela para frente", JOptionPane.ERROR_MESSAGE);
        }
    } else {
        if (jBSairSistema.isVisible() == true) {
            jBSairSistema.setVisible(false);
        }
        jDesktopPane.add(jIF);
        jIF.setVisible(true);
        HabilitaDesabilitaBatao(true);
        botaoAlternarJanela(jIF);
    }
}

public final void criaBotaoSair() {
    jBSairSistema.setVisible(true);
    jTBFerramentas.repaint();
    System.out.println("botão sair sistema visivel");
}
 public void jActionPerformed(java.awt.event.ActionEvent evt) {
    DesabilitaTodosBatao();
}

public void fecharJanela(JInternalFrame jIF) {
    jIF.dispose();
    jDesktopPane.remove(jIF);
    //Chama a função para desabilitar todos os botões
    DesabilitaTodosBatao();
    if (existeJanelaAberta() == false) {
        criaBotaoSair();
    } else {
        System.out.println("existe janela aberta");
    }
}

private JInternalFrame[] getFrameDesktopPane() {
    JInternalFrame[] quadros;
    quadros = jDesktopPane.getAllFrames();
    return quadros;
}

private boolean existeJanelaAberta() {
    return getFrameDesktopPane().length != 0;
}

public void fecharSistema() {
    if (JOptionPane.showConfirmDialog(null, "Deseja realmente sair?", "Sair do sistema", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
        System.exit(0);
    }
}

public void botaoAlternarJanela(JInternalFrame jIF) {
    jBAlternaJanela = new JButton();
    jBAlternaJanela.setText(jIF.getTitle());
    jBAlternaJanela.setPreferredSize(new java.awt.Dimension(150, 80));
    jBAlternaJanela.setBackground(new java.awt.Color(23, 100, 241));
    jBAlternaJanela.setToolTipText("Mostrar janela " + jIF.getTitle());
    jBAlternaJanela.addActionListener((ActionEvent e) -> {
        abrirJanela(jIF);
        jBAlternaJanela.setSelected(true);
        jBAlternaJanela.requestFocus(true);
    });
    jTBAlternaJanelas.add(jBAlternaJanela);
    jBAlternaJanela.setVisible(true);
}
}

A classe AcoesBotoes

public interface AcoesBotoes {

void sair();

void novo();

void salvar();

void cancelar();

void excluir();

void localizar();
}

A classe CadItenView

public class CadItemView extends javax.swing.JInternalFrame implements AcoesBotoes {


private static CadItemView cadItemView;

PrincipalView principalView;

public static CadItemView getIntancia() {
    if (cadItemView == null) {
        cadItemView = new CadItemView();
    }
    return cadItemView;
}

private CadItemView() {
    principalView = PrincipalView.getIntancia();
   
    initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    bGrupoVendido = new javax.swing.ButtonGroup();
    jPanel1 = new javax.swing.JPanel();

    setClosable(true);
    setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
    setIconifiable(true);
    setMaximizable(true);
    setTitle("Cadastro de Iten");
    addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
        public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
        }
        public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
        }
        public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            formInternalFrameClosing(evt);
        }
        public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
        }
        public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
        }
        public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
        }
        public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
        }
    });

    jPanel1.setBackground(javax.swing.UIManager.getDefaults().getColor("List.dropLineColor"));

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 1289, Short.MAX_VALUE)
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 535, Short.MAX_VALUE)
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );

    setBounds(0, 0, 1305, 571);
}// </editor-fold>                        

private void formInternalFrameClosing(javax.swing.event.InternalFrameEvent evt) {                                          
    principalView.fecharJanela(this);
}                                         


// Variables declaration - do not modify                     
private javax.swing.ButtonGroup bGrupoVendido;
private javax.swing.JPanel jPanel1;
// End of variables declaration                   

//implementação do AcoesBotoes
@Override
public void salvar() {
    
}

@Override
public void cancelar() {
    
}

@Override
public void sair() {
   
}

@Override
public void novo() {
    
}

@Override
public void excluir() {
    
}

@Override
public void localizar() {
  
}

}

R

Coloquei o codigo inteiro
Aqui ele está fazendo a inserção no banco mas eu tirei pra não exeder o limite de caracteres.
Talvez exista uma forma diferente de colocar os botões padrões na JToolBa, ou será que não tem como fazer isso em java.
E claro que ainda falta muita coisa à fazer pra ficar bom

Criado 26 de setembro de 2016
Ultima resposta 4 de nov. de 2016
Respostas 9
Participantes 2