Método para controlar botões!

6 respostas
S

Boa tarde a todos,

Eu gostaria de converter essa função feita em VB.NET para JAVA… Ela controla o estado dos botões…
Tentei aqui e não consegui, a idéia eh fazer um médoto genérico para várias classes de cadastros… se alguém puder ajudar!
Ou caso alguém tenha algo do tipo e puder disponibilizar!

Public Sub EstadoDeEdicao(ByVal Estado As String, ByVal Barra As ToolStrip)

        Dim N As Integer
        For N = 0 To Barra.Items.Count() - 1
            Barra.Items.Item(N).Enabled = False
        Next

        For N = 0 To Barra.Items.Count() - 1
            Select Case Estado
                Case "Incluir", "Alterar"
                    If Barra.Items.Item(N).Text = "&Salvar" Then
                        Barra.Items.Item(N).Enabled = True
                    End If
                Case "Salvar", "Excluir", "Padrao"
                    If Barra.Items.Item(N).Text = "&Incluir" Then
                        Barra.Items.Item(N).Enabled = True
                    ElseIf Barra.Items.Item(N).Text = "&Consultar" Then
                        Barra.Items.Item(N).Enabled = True
                    End If
                Case "Consultar"
                    'Deixar todos os botões desativados até o Clique duplo no grid de Consulta
                Case "Consultado"
                    If Barra.Items.Item(N).Text = "&Alterar" Then
                        Barra.Items.Item(N).Enabled = True
                    ElseIf Barra.Items.Item(N).Text = "&Excluir" Then
                        Barra.Items.Item(N).Enabled = True
                    End If
            End Select
        Next
    End Sub

Obrigado!

Diego

6 Respostas

davidbuzatto
public class SuaClassePrincipal {

    public SuaClassePrincipal() {

        iniciaComponentes();

    }

    private void iniciaComponentes() {

        // cira uma instância da classe que vai controlar os eventos dos btns
        OuvinteDosBotoes ouvinte = new OuvinteDosBotoes();

        // instancia, inicializa e adiciona os botões no container
        .
        .
        .
        
        // registra os ouvintes
        btn1.addActionListener( ouvinte );
        btn2.addActionListener( ouvinte );
        btn3.addActionListener( ouvinte );

    }

    // classe interna privada que manipula o evento de ação dos botões.
    private class OuvinteDosBotoes implements ActionListener {

        public void actionPerformed( ActionEvent e ) {

            Object btnFonte = e.getSource();

            if ( btnFonte == btn1 ) {

                // o que o btn1 deve fazer...

            } else if ( btnFonte == btn2 ) {

                // o que o btn2 deve fazer...

            } else if ( btnFonte == btn3 ) {

                // o que o btn3 deve fazer...

            }

        }

    }

    private JButton btn1;
    private JButton btn2;
    private JButton btn3;

}

O default das ides é gerar uma classe interna anônima para cada botão, mas esse "estilo" de codificação pode ser feito nelas tbm.

Era isso q vc precisava né?

Falow!

davidbuzatto

A… faltaram os pacotes

import java.awt.event.;
import javax.swing.
;

S

Olá,

Então esse esquema que vc passou eu já estou usando para verificar qual botão foi clicado, o que eu gostaria seri a uma função externa para habilitar e desabilitar esses botões! Acabei fazendo da seguinte forma:

public void controlaBotoes(String estadoEdicao){
       if ((estadoEdicao=="Padrao") || (estadoEdicao=="Excluir")){
          painelConsulta.setVisible(false);
          painelCampos.setVisible(true);
          btnIncluir.setEnabled(true);
          btnAlterar.setEnabled(false);
          btnSalvar.setEnabled(false);          
          btnExcluir.setEnabled(false);          
          btnConsultar.setEnabled(true);
          btnFechar.setEnabled(false);
          Repositorio.limpaJTextFields(painelCampos.getComponents());
          ativaCampos(false);
                    
          
       }
       else if((estadoEdicao=="Incluir") || (estadoEdicao=="Alterar")){
          painelConsulta.setVisible(false);
          painelCampos.setVisible(true);
          btnIncluir.setEnabled(false);
          btnAlterar.setEnabled(false);
          btnSalvar.setEnabled(true);          
          btnExcluir.setEnabled(false);          
          btnConsultar.setEnabled(false);
          btnFechar.setEnabled(false);
          ativaCampos(true);
          tfNome.requestFocus();
        }
       else if (estadoEdicao=="Consultando"){
          painelCampos.setVisible(false);
          painelConsulta.setVisible(true);
          btnIncluir.setEnabled(false);
          btnAlterar.setEnabled(false);
          btnSalvar.setEnabled(false);          
          btnExcluir.setEnabled(false);          
          btnConsultar.setEnabled(false);
          btnFechar.setEnabled(false);  
       }
       else if (estadoEdicao=="Consultar"){
          btnIncluir.setEnabled(false);
          btnAlterar.setEnabled(true);
          btnSalvar.setEnabled(false);          
          btnExcluir.setEnabled(true);          
          btnConsultar.setEnabled(false);
          btnFechar.setEnabled(false);
          painelConsulta.setVisible(false);
          painelCampos.setVisible(true);
          ativaCampos(false);
       }
    
   }

Não é exatamente o q eu queria mais está funcionando!

De qualquer forma mto obrigado pela ajuda!

Valew

dudaskank

olha, não sei como está funcionando então hehe

estadoEdicao=="Padrao"

o certo seria isso:

estadoEdicao.equals("Padrao")

o == compara se é o mesmo objeto, não se o conteúdo dos objetos são iguais… beleza?

flw

S

Valew pela dica!

O engraçado é que funcionou! Mesmo assim mudei para a maneira correta!

Valew!!

alexswb

aproveitando o tópico… alguém sabe algum jeito de deixar esse tipo de código mais automático?
sem ter que setar um por um dos botões, quando eles mudam de estado?

Criado 6 de agosto de 2006
Ultima resposta 11 de ago. de 2006
Respostas 6
Participantes 4