[Resolvido] Duvida sobre passagem de parâmetros (ArrayList)

Boa noite a todos, sou novo em Java como muitos por aqui e gostaria de saber se posso passar um ArrayList como parâmetro na hora em que meu CFronteiraLogin der um new CFPrincipal().setVisible(true);

Se a resposta for positiva gostaria de saber como, e na hora que minha classe CFPrincipal() receber este ArrayList como uso o mesmo.

CFronteiraLogin

public void Logar() { CControleLogin controleLogin = new CControleLogin(); if (controleLogin.PesquisarLogin(txtLogin.getText(), String.valueOf(jpsSenha.getPassword())).size() == 1) { new CFPrincipal().setVisible(true); dispose(); } else { JOptionPane.showMessageDialog(null, "Login ou senha não corespondem!", "Login invalido.", JOptionPane.WARNING_MESSAGE); txtLogin.requestFocus(); } }

Fala brow…
Claro que pode…

Na classe CFronteiraPrincipal, vc define um construtor que pede um arraylist como parametros

public class CFronteiraPrincipal {
   private ArrayList<String> minhaArray;
   ...
   public CFronteiraPrincipal(ArrayList<String> array){
        this.minhaArray  = array;
   }
}

E na hora de instanciar, eh so passar a List

new CFronteiraPrincipal(array).setVisible(true);

Abraco!

Obrigado kenneth, já me ajuda e muito sua explicação, gostaria se possível de saber como faço para atribuir esses valores do ArrayList a algumas variáveis do sistema, em principio o ArrayList esta passando alguns parâmetros como, nome do funcionário logado, cargo, código etc…

Fala brow…

Nao entendi cara…
Voce quer pegar essas informacoes do sistema e jogar no ArrayList?
Ou tem as informacoes no Array e quer trabalhar com elas?

Abraco!

Já tenho essas informações no ArrayList e quero trabalhar com elas.

Fala brow…

Como voce organizou essas informacoes no ArrayList?

Se ela for um ArrayList de String, por exemplo:

for (String str : array){
    // Isso vai percorrer toda sua array.. 
    // str assume o valor de cada elemento, um de cada vez...
    System.out.println(str);
}

kenneth estou pegando os dados do banco da seguinte forma :

    public ArrayList<CModeloLogin> PesquisarLogin(String Login, String Senha) {

        Connection con = Conectar();
        PreparedStatement pstmt;
        ArrayList<CModeloLogin> lstLogin = new ArrayList<CModeloLogin>();

        try {

            pstmt = con.prepareStatement("SELECT * FROM LOGIN WHERE LOGIN = ? AND SENHA = ? AND ATIVO = 0");
            pstmt.setString(1, Login);
            pstmt.setString(2, Senha);


            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                CModeloLogin cadastroLogin = new CModeloLogin();
                cadastroLogin.setCodFuncionario(rs.getInt("cod_funcionario"));
                cadastroLogin.setLogin(rs.getString("login"));
                lstLogin.add(cadastroLogin);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lstLogin;
    }

Depois de pensar um pouco e reler com atenção a sua resposta eu fiz o seguinte :

[code]
public class CFPrincipal extends javax.swing.JFrame {

private ArrayList<CModeloTeste> lstEmprestimo;
private ArrayList<CModeloLogin> pFuncionario;

/** Creates new form CFPrincipal */
public CFPrincipal(ArrayList<CModeloLogin> pLoginFuncionario) {

this.pFuncionario  = pLoginFuncionario;

String login = null;
for (CModeloLogin pFuncionarioLogado : pLoginFuncionario){
    int codigo = pFuncionarioLogado.getCodFuncionario();
    login = pFuncionarioLogado.getLogin();
    System.out.println(codigo);
    System.out.println(login);
}


    initComponents();
    setLocationRelativeTo(null);

    setTitle("LMS for Lib                                " + "                  Funcionário : " + login);
    NovoEmprestimoLimpaCampos();
    MontaTelaDevolucao();
}[/code]

Gostaria de sua opinião, esta maneira que estou usando os dados do meu ArrayList esta correta?

Fala brow…

Se eu entendi direito, voce quer fazer um login?
Se eh essa a ideia, tu nao precisa de um ArrayList…
Voce pode so carregar o CFModeloLogin do banco, e passar
este objeto ao invez da ArrayList pro CFPrincipal…

A menos que nao seja um login, e que vc queira pegar mais de um usuario…

=]

Vou explicar o que quero fazer, pois acredito que fique mais fácil^^ só postar código e esperar que você adivinhe o que quero é complicado.

Primeiramente estou trabalhando em um projeto (TCC) que é um Sistema para gerenciar o empréstimo de livros etc de uma biblioteca.
em alguns momentos ( reserva, renovação e devolução dos livros eu quero gravar quem foi o funcionario responsavel por esta tranzação ).

Então…

O que tenho é um login que me retorna um uma “lstLogin” , o que eu faço é verificar se esta é == 1 ( ou seja que retorno um funcionário valido para o login do sistema )
como já visto no código acima do CFronteiraLogin

ao iniciar o CFronteiraPrincipal, gostaria de passar alguns parâmetros para ele como, por exemplo, o nome completo do funcionário, o código dele no banco etc, para quando necessário (no caso as transações já descritas) eu ter o código do funcionário por exemplo, para gravar no banco ( um foreign key ) informando quem emprestou tal livro.

espero ter sido claro.

Fala brow,

Assim fica mais facil…
aeeahaeaeuheauea

Bom, eu faria da forma como te falei… Na tela de login, recuperaria do banco
o objeto Usuario, com seu nome, etc e tudo mais… E passaria so este objeto
para a tela principal.

Dentro desta tela, voce pode usar os dados da forma como quiser, so fazendo os get’s necessarios…

Algo como:

  // ... tela de login...
  Usuario user = <recuperar do banco>;


  CFPrincipal principal = new CFPrincipal(user);

E dentro deste objeto principal (CFPrincipal)

   // declara um objeto Usuario aqui
   Usuario user = null;

   // Construtor
   public CFPrincipal(Usuario usuario){
        this.user = usuario;
   }

   // e quando vc precisar...
   private void finalizaEmprestimo(){  
        // eh so exemplo de uso
        System.out.println("Emprestimo realizado por " + this.user.getNome());      
   } 

Blz ?

Boa sorte ae!

Abraco!

Entendi, muito obrigado mesmo, sua ajuda foi de grande valia kenneth.

Um grande abraço.

Fala brow,

Sempre as ordens…

Qualquer coisa, grita ae malandro.

Abraco!

ps: Adiciona [Resolvido] no titulo.

,