setEnabled e getText

11 respostas
joaosavio

Olá pessoal, segue abaixo trechos do meu programa

classe Login.java

//...
private void botao_okActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String usuario = "joaosavio",
           senha = "123456",
           login = JTextField.getText(),
           password = new String(JPasswordField.getPassword());
    
    if (login.equals(usuario))
    {
        if (password.equals(senha))
        {
            TelaPrincipal tela = new TelaPrincipal();
            tela.ajeitarBotoes(true);
            dispose();
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Senha incorreta");
          
        }
    }
    else
        JOptionPane.showMessageDialog(null, "Usuario incorreto");
  
}

classe TelaPrincipal.java

//...
public TelaPrincipal() 
    {
        initComponents();
        formataData();
        ajeitarBotoes(false);
    }

//...

 public void ajeitarBotoes(boolean permissoes)
    {
        treino_historico.setEnabled(permissoes);
        menu_cadastros.setEnabled(permissoes);
        //os nomes destes dois botoes estao circulados de amarelo em        
        //todo o programa, mas ele roda
    }

Duas perguntas

  1. Quando digito o login, esta dando usuario invalido, deve ser por causa dos espacos em branco. Eu gostaria de saber como resolver isso.

  2. Quando inicia o programa, é chamado o metodo ajeitarBotoes() e ele funciona. Por que quando este metodo é chamado de novo (no login.java) não funciona (já assumindo estar resolvido o problema acima, pois testei sem ele)?

obrigado pessoal

11 Respostas

ViniGodoy

Peraí, vc declarou o seu JTextField assim?

JTextField JTextField;
JPasswordField JPasswordField;

Isso é uma péssima prática. Variáveis devem ter nomes em letras minúsculas.

JTextField txtUsuario; JPasswordField pwdSenha;

Agora, não entendi. Você diz que “deve ser por causa dos espaços em branco”. Que espaços em branco vc se refere?

W

é esse negocio de usar nome de variavel com o mesmo nome da classe é muito ruim, o pior é que o compilador aceita…
não intendi tambem o lance de espaços em brancos, voce ta digitando espaços dentro do campo de texto tipo joao savio ?
se digitar so joaosavio vai ter espaço nenhum, voce pode tar um trim(); na string capturada mas so vai remover espaços do inicio e do fim… nao o espaço entre palavras…
qualquer coisa poe pra imprimir o nome do usuario digitado,na mensagem de erro, que ai voce vai saber se errou algo no caminho, visto que o codigo ai postado nao ta completo pra agente testar…

joaosavio

blza

com o trim() resolveu o problema

agora o 2º. problema nao to conseguindo resolver

se alguem puder ajudar

e valeu pelas dicas pessoal

Andre_Brito

Peraí, só uma coisa… se você digita joaosavio dentro do txtUsuario, ele não vai ter espaços em brancos… pelo menos aqui isso nunca ocorreu, então não teria porquê usar o trim(). (essa de usar o trim() é uma saída, mas acho que é meio que gambi, não?).

W

não seria gambi, eu sempre uso trim(); porque eu não gostaria ter um registro com um espaço em branco no final ou no inicio, ja que visualmente eu não iria nem notar poderia acabar prejudicando em algum momento…
Claro que como tu falou era pra funcionar mesmo sem trim…

voltando ao joaosavio:

cara tua 2° pergunta eu nao intendi direito, essas variaveis que tu da setEnabled sao botoes neh? oque seria tu tentar denovo usar o metodo? vc usa ele sempre que um usuario loga ? entao logo tu teria um logoff na tua aplicação que bloquearia de volta os botoes ? , ou tu queria chamar o mesmo metodo ajeitarBotoes e desabilitar os botoes?

bom o metodo vai fazer a mesma coisa quando ele for executado, vc pode por um System.out.printn(“metodo ajeitarBotoes”) dentro to metodo pra testar se ele ta sendo chamado denovo, os unicos motivos que vejo pro metodo nao funcionar e se tu remove-se o actionListener ou entao tua janela perder o focus…

joaosavio

Olá pessoal, vou colocar o código inteiro.
Resumindo, minha duvida é que quando faço o login (usuario e senha corretos, linha 358 ) o método ajeitarBotoes (linha 248 ) nao esta funcionando

/*
 * TelaPrincipal.java
 *
 * Created on 2 de Janeiro de 2008, 17:43
 */

package Principal;

import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author  joaosavio
 */
public class TelaPrincipal extends javax.swing.JFrame {
    
    private Timer timer;
      
    public TelaPrincipal() 
    {
        initComponents();
        formataData();
    }

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

        label_usuario = new javax.swing.JLabel();
        label_hora = new javax.swing.JLabel();
        label_data = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        treino_historico = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        menu_login = new javax.swing.JMenuItem();
        menu_menu_cadastros = new javax.swing.JMenu();
        menu_usuario = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        menu_sair = new javax.swing.JMenuItem();
        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu2 = new javax.swing.JMenu();
        menu_login1 = new javax.swing.JMenuItem();
        menu_cadastros = new javax.swing.JMenu();
        menu_usuario1 = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JSeparator();
        menu_sair1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Treino");

        label_usuario.setText("Nenhum usuário no sistema");

        label_hora.setText("Hora");

        label_data.setText("Data");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Treino"));
        jPanel1.setForeground(new java.awt.Color(102, 102, 255));

        treino_historico.setText("Medidas");
        treino_historico.setEnabled(false);
        treino_historico.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                treino_historicoActionPerformed(evt);
            }
        });

        jButton2.setText("jButton2");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(treino_historico)
                    .addComponent(jButton2))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(treino_historico, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton2)
                .addContainerGap(163, Short.MAX_VALUE))
        );

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Utilitarios/Vista_Business_1024_NL.jpg"))); // NOI18N
        jLabel1.setText("jLabel1");

        jMenuBar1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jMenu1.setText("Arquivo");

        menu_login.setText("Login");
        jMenu1.add(menu_login);

        menu_menu_cadastros.setText("Cadastros");

        menu_usuario.setText("Novo Usuário");
        menu_menu_cadastros.add(menu_usuario);

        jMenu1.add(menu_menu_cadastros);
        jMenu1.add(jSeparator1);

        menu_sair.setText("Sair");
        jMenu1.add(menu_sair);

        jMenuBar1.add(jMenu1);

        jMenuBar2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jMenu2.setText("Arquivo");

        menu_login1.setText("Login");
        menu_login1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menu_login1ActionPerformed(evt);
            }
        });
        jMenu2.add(menu_login1);

        menu_cadastros.setText("Cadastros");
        menu_cadastros.setEnabled(false);

        menu_usuario1.setText("Novo Usuário");
        menu_cadastros.add(menu_usuario1);

        jMenu2.add(menu_cadastros);
        jMenu2.add(jSeparator2);

        menu_sair1.setText("Sair");
        jMenu2.add(menu_sair1);

        jMenuBar2.add(jMenu2);

        setJMenuBar(jMenuBar2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(label_usuario)
                        .addGap(91, 91, 91)
                        .addComponent(label_data, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(39, 39, 39)
                        .addComponent(label_hora)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 264, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(label_usuario)
                    .addComponent(label_hora)
                    .addComponent(label_data))
                .addContainerGap())
        );

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

  

    private void treino_historicoActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    new Treino.Medidas().setVisible(true);
    }                                                

    private void menu_login1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    new Login().setVisible(true);
    
    }                                           
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TelaPrincipal().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JLabel label_data;
    private javax.swing.JLabel label_hora;
    private javax.swing.JLabel label_usuario;
    private javax.swing.JMenu menu_cadastros;
    private javax.swing.JMenuItem menu_login;
    private javax.swing.JMenuItem menu_login1;
    private javax.swing.JMenu menu_menu_cadastros;
    private javax.swing.JMenuItem menu_sair;
    private javax.swing.JMenuItem menu_sair1;
    private javax.swing.JMenuItem menu_usuario;
    private javax.swing.JMenuItem menu_usuario1;
    private javax.swing.JButton treino_historico;
    // End of variables declaration                   
    public void formataData()
    {
        timer = new Timer(1000, new ActionListener() 
        {
            public void actionPerformed(ActionEvent evt) 
            {
                Calendar calendar = Calendar.getInstance();
                Date date = calendar.getTime();
                SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
                label_data.setText(dateFormat.format(date));
                dateFormat = new SimpleDateFormat("HH:mm:ss");
                label_hora.setText(dateFormat.format(date));
            }
        });
        timer.start();
    }
    
    public void ajeitarBotoes(boolean permissoes, String nome)
    {
        treino_historico.setEnabled(permissoes);
        menu_cadastros.setEnabled(permissoes);
        label_usuario.setText(nome);
        
    }
    
}





/*
 * Login.java
 *
 * Created on 2 de Janeiro de 2008, 20:18
 */

package Principal;

import javax.swing.JOptionPane;

/**
 *
 * @author  joaosavio
 */
public class Login extends javax.swing.JFrame {
  
    /** Creates new form Login */
    public Login() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        botao_ok = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        JTextField = new javax.swing.JTextField();
        JPasswordField = new javax.swing.JPasswordField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Login");

        botao_ok.setText("OK");
        botao_ok.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_okActionPerformed(evt);
            }
        });

        jButton2.setText("Limpar");

        jLabel1.setText("Usuário:");

        jLabel2.setText("Senha:");

        JTextField.setText("                              ");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(24, 24, 24)
                        .addComponent(JPasswordField, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(JTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(botao_ok, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
                        .addComponent(jButton2)))
                .addContainerGap(30, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(JTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(JPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton2)
                    .addComponent(botao_ok))
                .addContainerGap(26, Short.MAX_VALUE))
        );

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

    private void botao_okActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String usuario = "joaosavio",
           senha = "123456",
           login = JTextField.getText(),
           password = new String(JPasswordField.getPassword());
    
    if (login.trim().equals(usuario))
    {
        if (password.equals(senha))
        {
            TelaPrincipal tela = new TelaPrincipal();
            tela.ajeitarBotoes(true, usuario);
            dispose();
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Senha incorreta");
          
        }
    }
    else
        JOptionPane.showMessageDialog(null, "Usuario incorreto");
    
   
}                                        
    
    
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Login().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JPasswordField JPasswordField;
    private javax.swing.JTextField JTextField;
    private javax.swing.JButton botao_ok;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration                   
    
}

abraços e valeu

W
funciona sim, so falta tu adicionar setVisible(true) pra tua tela:

TelaPrincipal tela = new TelaPrincipal();

tela.ajeitarBotoes(true, usuario);

tela.setVisible(true);

dispose();

bom pelo menos aqui mostrou o nome do usuario logado, e habiltou os botoes, so que os botoes nao fazem nd na tela principal ainda pelo menos alguns, mas pelo que vi no codigo, tu ainda deve por os eventos creio eu…

bom se nao for isso ai que eu to pensando, seria bom tu narrar tipo um diagrama de sequências pra intender melhor, pode ser falando mesmo tipo…
inicia a classe login, ai loga, ai vai pra segunda tela automatico… ai clica em tal botao e tem que aparecer nao sei oq… saca ? pra saber exatamente oque tu quer…

e so mais uma coisa quando for postar codigo, poe os codigos de cada classe dentro de um " [ code ] [/code] " separado porque fica mais facil , porque da pra usar o botao copy to clipboard, que vem no quote de codigos, e colar direto na classe no eclipse =p …

bom qualquer so falar ai, eu não trabalho cm java entao qualquer coisa que eu possa mecher em codigo java por aqui ja fico feliz =] …

edit: ps tira esse monte de caractere em branco dentro do campo de login, que é mt chato fica apagando ele pra poder digitar o login, acho que era por isso que tava dando erro sem o trim();

joaosavio

valeu cara me ajudou bastante

joaosavio

ou só uma coisa

o q vc me falou funciona, mas abre em uma nova janela

eu queria q fosse na mesma

tem como?

abraços e valeu

joaosavio

up

Andre_Brito

JInternalFrame?

http://www.guj.com.br/posts/list/29054.java

Criado 2 de janeiro de 2008
Ultima resposta 12 de jan. de 2008
Respostas 11
Participantes 4