• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fckool

[Resolvido] Incializar um Jpanel invisivel

15 mensagens neste tópico

Boas,

Estou a desenvolver um projecto de base dados de uma biblioteca e para já estou com um problema.

Precisava de saber como posso no Jframe, inicializar um Jpanel invisible, para que quando eu carregue num botão ele aparecer.

O comando para ele aparecer eu ja coloquei no botão e está a funcionar.

Para o mesmo utilizei:   

PanRegistar.setVisible(true);

em que PanRegistar é o nome da variable do meu JPanel que contem varios campos de textField e label's.

Se utilizar false ele desaparece se carregar no botão.

Agora a minha duvida é como o coloco a inicializar logo invisible.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Coloca o código para esconder imediatamente depois da criação do painel.

Se estiveres a usar NetBeans IDE, tens opções para colocar código antes e depois da iniciação, recomendo usares essas opções. Se não estiveres a usar, coloca o código antes da frame se tornar visível mas depois de iniciares o JPanel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Coloca o código para esconder imediatamente depois da criação do painel.

Se estiveres a usar NetBeans IDE, tens opções para colocar código antes e depois da iniciação, recomendo usares essas opções. Se não estiveres a usar, coloca o código antes da frame se tornar visível mas depois de iniciares o JPanel.

Mas eu ao arrastar 1 Jpanel para um Jform, ele nao fica com codigo como se fosse um botão...

pode explicar onde meto o codigo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu ao arrastar 1 Jpanel para um Jform, ele nao fica com codigo como se fosse um botão...

pode explicar onde meto o codigo?

Com o Netbeans, se adicionares um JPanel a um JForm, e clicares com o botão direito do rato, ires as propriedades, deve tar lá a propriedade Visible... É só meteres False

Por código, se fores ao código do teu programa, logo no inicio da tua class deves ter uma linha inicomponents(); (ou algo parecido)... Esta linha vai chamar o método que inicia todos os componentes como forms botões, etc. e se quiseres então pôr invisível por código basta que logo a seguir a esta linha ponhas: nomedoJpanel.setVisible(false);

Alguém me corrija se tiver errado :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o Netbeans, se adicionares um JPanel a um JForm, e clicares com o botão direito do rato, ires as propriedades, deve tar lá a propriedade Visible... É só meteres False

Por código, se fores ao código do teu programa, logo no inicio da tua class deves ter uma linha inicomponents(); (ou algo parecido)... Esta linha vai chamar o método que inicia todos os componentes como forms botões, etc. e se quiseres então pôr invisível por código basta que logo a seguir a esta linha ponhas: nomedoJpanel.setVisible(false);

Alguém me corrija se tiver errado :)

Olá... nas propriedades não tem a opção visible, ja corri as propriedades do Jpanel de trás para a frente..

Quanto ao colocar o codigo no inicomponents(); ele assume o nome do panel como uma class que supostamente não existe..

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu ao arrastar 1 Jpanel para um Jform, ele nao fica com codigo como se fosse um botão...

pode explicar onde meto o codigo?

Como um botão?

Todos os componentes têm um  método setVisible, é só invocar, se existe nas propriedades ou não, não me lembro, mas é capaz de existir.

Deves colocar o código depois do initComponents ou, preferencialmente, usar a opção para adicionar código depois da iniciação do JPanel. Se clicares no JPanel que queres editar, no painel de propriedades, tens uma opção para editar código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como um botão?

Todos os componentes têm um  método setVisible, é só invocar, se existe nas propriedades ou não, não me lembro, mas é capaz de existir.

Deves colocar o código depois do initComponents ou, preferencialmente, usar a opção para adicionar código depois da iniciação do JPanel. Se clicares no JPanel que queres editar, no painel de propriedades, tens uma opção para editar código.

Tens razão.. carreguei em customize code, e inseri a linha de codigo do visible(false)

Finalmente ficou a funcionar e agora entendo melhor como isto funciona. O meu muito obrigado.

Aproveito a thread para expor outra dúvida um pouco mais complexa.

Precisava de obter o conteudo de uma Password Field e mostra-la numa base de access atraves de SQL.

Eu estou a guardar o valor da Password num array Char e devolve-lo depois para a tabela...

String InsNome = RegNome.getText();String InsMail = RegMail.getText();char[] InsPassword = RegPass.getPassword();stmt.executeUpdate("INSERT INTO Registos (Nome, Email, Password) VALUES ('"+InsNome+"','"+InsMail+"','"+InsPassword+"')");

so' q os dados chegam ao access digamos codificados... eu presumo que ele esta apenas a obter o valor dos asteriscos em vez do conteudo...

Alguem sabe uma solução?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde tens char[] InsPassword = RegPass.getPassword(); porque não experimentas guardar antes numa String?

experimenta substituir isso por: String InsPassword = new String(RegPass.getPassword());

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde tens char[] InsPassword = RegPass.getPassword(); porque não experimentas guardar antes numa String?

experimenta substituir isso por: String InsPassword = new String(RegPass.getPassword());

Eu ja tinha feito a conversão de char pa string mas realmente assim fica mais limpo o código, obrigado.

Tenho outra dúvida é como eu vou validar o login em SQL. Ou seja como vou fazer com que ele prossiga no programa se o nome q utilizador introduzir corresponder a password ja guardada na BD para esse utilizador..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Login mais básico que já fiz foi do tipo (supondo que já tens uma connection com o nome conn, senao muda o nome):


PreparedStatement pstat = conn.prepareStatement("select * from utilizadores where nome=? and pass=?");
                        pstat.setString(1, ONomeAProcurar);                           
                        pstat.setString(2, APassAPRocurar);
                        
                        pstat.execute();
                        
                        ResultSet rs = pstat.getResultSet();
                        
                        rs.next();
                        
                        String BDnome = new String(rs.getString("nome"));
                        String BDpass = new String(rs.getString("pass"));

Mudas o nome das tabelas e das colunas e deve funcionar

Depois é só comparar com um simples if o BDnome com a tua caixa de texto bem como o BDpass...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Login mais básico que já fiz foi do tipo (supondo que já tens uma connection com o nome conn, senao muda o nome):


PreparedStatement pstat = conn.prepareStatement("select * from utilizadores where nome=? and pass=?");
                        pstat.setString(1, ONomeAProcurar);                           
                        pstat.setString(2, APassAPRocurar);
                        
                        pstat.execute();
                        
                        ResultSet rs = pstat.getResultSet();
                        
                        rs.next();
                        
                        String BDnome = new String(rs.getString("nome"));
                        String BDpass = new String(rs.getString("pass"));

Mudas o nome das tabelas e das colunas e deve funcionar

Depois é só comparar com um simples if o BDnome com a tua caixa de texto bem como o BDpass...

Obrigado pelo código.

Uma duvida:

pstat.setString(1, ONomeAProcurar); .. "ONomeAProcurar " Aqui vai ser o quê? ou melhor vai buscar o valor onde?

Peço desculpa se estou a ser um bocado chato, mas tive apenas 4 ou 5 aulas para fazer este trabalho  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vai ser o nome de quem queres procurar na tabela da base de dados...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vai ser o nome de quem queres procurar na tabela da base de dados...

Não me estou a fazer entender, isso vai ser uma variavel?

Eu quero apenas obter a concordancia entre o username e a password que esse username ja tem atribuida na base dados, apos fazer 1 registo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aquilo tu vais substituir pela tua variável que tenha o nome que queres confirmar...

Ou até podes pôr lá directo a tua caixa de texto que tens onde o utilizador põe o username... Tipo jtextbox.getText(); e na pass o mesmo... Depois em baixo se tiver tudo certo... ok maravilha, fazes o que quiseres com o reencaminhamento... Caso não esteja certo, provavelmente vai dar uma SQLException a dizer que não encontrou na BD o nome... Então sugiro que ponhas um Try/Catch aí para ver quando encontra ou não o utilizador na BD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aquilo tu vais substituir pela tua variável que tenha o nome que queres confirmar...

Ou até podes pôr lá directo a tua caixa de texto que tens onde o utilizador põe o username... Tipo jtextbox.getText(); e na pass o mesmo... Depois em baixo se tiver tudo certo... ok maravilha, fazes o que quiseres com o reencaminhamento... Caso não esteja certo, provavelmente vai dar uma SQLException a dizer que não encontrou na BD o nome... Então sugiro que ponhas um Try/Catch aí para ver quando encontra ou não o utilizador na BD

O meu muito obrigado pela paciencia que tiveram. Consegui resolver o problema KiNgPiTo tal como disseste.  :)

Aqui fica o código. No if meti apenas para ele dizer se os dados tavam bem ou não ..  Muito Obrigado pela ajuda!

try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con=DriverManager.getConnection("jdbc:odbc:Biblioteca","","");  
        PreparedStatement pstat = con.prepareStatement("SELECT * FROM Registos WHERE Nome=? AND Password=?");
                        String User = new String(txtUser.getText());
                        String Pass = new String(txtPass.getPassword());
                        pstat.setString(1, User);
                        pstat.setString(2,Pass);
                        pstat.execute();                        
                        RS = pstat.getResultSet();
                        RS.next();
                        String BDnome = new String(RS.getString("Nome"));
                        String BDpass = new String(RS.getString("Password"));                        
                        if(BDnome.equals(User) && BDpass.equals(Pass)){
                            JOptionPane.showMessageDialog(this, "Utilizador existente");
                            
                        }
pstat.close();
            con.close();
}
catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Erro ao executar");
        } catch (ClassNotFoundException ep) {
          JOptionPane.showMessageDialog(this, "Driver nao encontrado");
        }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora