Ola a todos
Tenho uma tela de abertura com , usuario, senha, e nivel [ adiministrador e usuario ] esse fica escondido], quando digito a senha e usuario corretos, me abre a segunda tela que é a principal. O que gostaria é quando abro a tela principal se for usuario, ela me deixa algums itens do menu eneblados, como por ex: Relatorios, e quando abro a tela principal se for administrador, ela me deixa todos itens liberados. Por favor alguem pode me ajudar.
[quote=CRCJ]Ola a todos
Tenho uma tela de abertura com , usuario, senha, e nivel [ adiministrador e usuario ] esse fica escondido], quando digito a senha e usuario corretos, me abre a segunda tela que é a principal. O que gostaria é quando abro a tela principal se for usuario, ela me deixa algums itens do menu eneblados, como por ex: Relatorios, e quando abro a tela principal se for administrador, ela me deixa todos itens liberados. Por favor alguem pode me ajudar.[/quote]
Oi
É adequado informar a tecnologia para facilitar quem deseja lhe ajudar? Swing? AWT? JSF? JSP? Entende?
Supondo que seja Swing/AWT, creio que tem o método enable nos componentes, acredito que se der um .setEnable(false) ele deixa “desabilitado” o componente, “escurecido”, ok?
Abraços.
[quote=nel][quote=CRCJ]Ola a todos
Tenho uma tela de abertura com , usuario, senha, e nivel [ adiministrador e usuario ] esse fica escondido], quando digito a senha e usuario corretos, me abre a segunda tela que é a principal. O que gostaria é quando abro a tela principal se for usuario, ela me deixa algums itens do menu eneblados, como por ex: Relatorios, e quando abro a tela principal se for administrador, ela me deixa todos itens liberados. Por favor alguem pode me ajudar.[/quote]
Oi
É adequado informar a tecnologia para facilitar quem deseja lhe ajudar? Swing? AWT? JSF? JSP? Entende?
Supondo que seja Swing/AWT, creio que tem o método enable nos componentes, acredito que se der um .setEnable(false) ele deixa “desabilitado” o componente, “escurecido”, ok?
Abraços.[/quote]
Nel
Desculpe é Swing. Já tentei isso, coloquei uma JLabel na tela pricipal que quando é aberta atravez da senha me mostra se é usuario ou admininstrador, mas não funcionou
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* TelaPrincipal.java
*
* Created on 02/05/2011, 16:58:46
*/
package Principal;
/**
*
* @author Ricardo
*/
import Cadastro.CadastroDeContas;
import Cadastro.Fornecedor;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class TelaPrincipal extends javax.swing.JFrame
{
/** Creates new form TelaPrincipal */
public TelaPrincipal()
{
initComponents();
[b] {
if (lbUsuario.equals("Usuario"));
Menu_cadastros.setEnabled(false);
} [/b]
//MOSTRA FOTO PRINCIPAL
foto.setIcon(new ImageIcon("C:/Contas Pagar Receber - JAVA/Imagens/TelaPrincipal-1.jpg"));
//DESABILITA O X NO FORMULÁRIO
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//MOSTRA DATA NO FORMULÁRIO
Date data = new Date();
String dia = "" + data.getDate();
String mes = "" + String.valueOf(data.getMonth()+1);
String ano = "" + (1900 + data.getYear());
if (Integer.parseInt(dia)<=9)
dia = "0" + dia;
if (Integer.parseInt(mes)<=9)
mes = "0" + mes;
datacada.setText(dia+"/"+mes+"/"+ano);
//MOSTRA HORA NO FORMULÁRIO
Date hora = new Date();
String thora ="" + data.getHours();
String tminuto=""+ data.getMinutes();
String tsegundo=""+ data.getSeconds();
if (Integer.parseInt(tminuto)<=9)
tminuto = "0" + tminuto;
if (Integer.parseInt(tsegundo)<=9)
tsegundo = "0" + tsegundo;
horacada.setText(thora+":"+tminuto+":"+tsegundo);
}
//COMANDO ABRE FORMULÁRIO FORNECEDOR
private void MenuItem_FornecedorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Fornecedor().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO CADASTRO DE CONTAS
private void MenuItem_ContasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new CadastroDeContas().show();
this.dispose();
}
private void Menu_cadastrosMenuSelected(javax.swing.event.MenuEvent evt) {
// TODO add your handling code here:
}
private void Menu_cadastrosItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
//new Fornecedor ().show();
//this.dispose();
}
private void Menu_cadastrosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// new Fornecedor().show();
}
private void Menu_relatoriosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
//COMANDO SAIR DE UM FORMULÁRIO
private void MenuItem_EncerrarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//if(javax.swing.JOptionPane.showConfirmDialog(null,"DESEJA ENCERRAR AS ATIVIDADES ?","ENCERRAR",
//javax.swing.JOptionPane.YES_NO_OPTION )==0)
//this.dispose();
Object[] options =
{
"Sim", "Não"
};
int i = JOptionPane.showOptionDialog(null,
"DESEJA ENCERRAR AS ATIVIDADES ?","ENCERRAR",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (i == JOptionPane.YES_OPTION)
{
//System.exit(0);
this.dispose();
//new Principal.TelaPrincipal().show();
}
}
private void MenuItem_FornecedorItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE FORNECEDORES COMPLETO
private void RelaFornecCompletoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaFornecCompleto().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE CONTAS COMPLETO
private void RelaContasCompletoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaContasCompleto().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE CONTAS FILTRADO
private void RelaContasFiltradoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaContasFiltrado().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO DE USUARIOS
private void MenuItem_UsuariosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Cadastro.Usuarios().show();
this.dispose();
}
seguinte…tem varias maneiras de fazer isso.
pelo visto vc ta tentando com perfil, acho a maneira mais facil. Eu faço assim, veja: http://guj.com.br/java/251717-duvida-no-controle-de-acesso-a-usuarios
Como vc soh tem 2 perfis eh ainda mais facil.
t+ e boa sorte.
[quote=fernandopaiva]seguinte…tem varias maneiras de fazer isso.
pelo visto vc ta tentando com perfil, acho a maneira mais facil. Eu faço assim, veja: http://guj.com.br/java/251717-duvida-no-controle-de-acesso-a-usuarios
Como vc soh tem 2 perfis eh ainda mais facil.
t+ e boa sorte.
[/quote]
Fernando
Obrigado, mas não seria isso exatamente. O que ocorre é o seguinte, quando abro meu sistema entra uma tela de senha, usuario e senha, quando voçe digita, o sistema ja identifica se a pessoa é usuario ou adiministrador, e se estiver correto, vai para a pagina principal, la tem uma JLabel que fica invisivel, e se for usuario não pode abrir alguns itens no meu, se a jlabel for adiminstrador, ela abre todo o meu, eu consegui transportar da tela senha para a tela principal a jlabel, mas o que ocorre é que qualquer um usuario ou adiministrador que aparece na jlabel da tela principal o menu fica eneblado. Não sei se fiu bem claro, mas é isso que acontece.
veja o codigo quando é aberta a tela principal, é ai que esta o problema, tato usuario como adiministrador, o menu fica eneblado
public TelaPrincipal()
{
initComponents();
{
if (lbUsuario.equals("Usuario"));
Menu_cadastros.setEnabled(false);
}
Tenta debugar o código e passar nessa linha onde você faz a verificação do nível do usuário e saber se ele sempre entra na condição if ou não, porque não dá pra dizer ao certo com pouca informação de código que você passou.
O problema está, provavelmente, nessa sua verificação.
tente:
public TelaPrincipal()
initComponents();
{
if (lbUsuario.getText().equals("Usuario"));
Menu_cadastros.setEnabled(false);
}
ao invés de:
[code]public TelaPrincipal()
initComponents();
{
if (lbUsuario.equals(“Usuario”));
Menu_cadastros.setEnabled(false);
}
[/code]
Perceba que no seu código, a verificação sempre retornara false.
Você não está comparando o texto que está no label, e sim o label.
[quote=sverker]O problema está, provavelmente, nessa sua verificação.
tente:
public TelaPrincipal()
initComponents();
{
if (lbUsuario.getText().equals("Usuario"));
Menu_cadastros.setEnabled(false);
}
ao invés de:
[code]public TelaPrincipal()
initComponents();
{
if (lbUsuario.equals(“Usuario”));
Menu_cadastros.setEnabled(false);
}
[/code]
Perceba que no seu código, a verificação sempre retornara false.
Você não está comparando o texto que está no label, e sim o label.[/quote]
Desculpe, mas não funcionou, continua a mesma coisa como se nada tivesse mudado :twisted:
Cara uma sugestão seria criar uma classe “Usuario” que contesse os dados deles sendo que o nível também estária entre eles na sua tela de login ao entrar e confirmar os dados, quardar-los também nesse objeto que referencia a classe “Usuario” exemplo:
Usuario user = new Usuario(seuLogin, suaSenha, seuNivelDeAcesso);
em seguida você quer que ao clicar em logar e estiver tudo certo ele abra a tela principal então poderia ficar assim no seu “Construtor” da sua classe principal
[code]//recebe o usuário logado com todos os dados dele
public TelaPrincipal(Usuario user){
initComponents();
//Na sua verificação ficaria mais ou menos assim
if(user.getNivel().equals("Usuario")){
//caso for usuário faça ...
}
}[/code]
e claro que quando você logar você irá criar essa tela passando o usuário logado mais ou menos assim
new TelaPrincipal(user).setVisible(true);
testa ai e avisa, flw!
[quote=Ivan Alves]Cara uma sugestão seria criar uma classe "Usuario" que contesse os dados deles sendo que o nível também estária entre eles na sua tela de login ao entrar e confirmar os dados, quardar-los também nesse objeto que referencia a classe "Usuario" exemplo:
Usuario user = new Usuario(seuLogin, suaSenha, seuNivelDeAcesso);
em seguida você quer que ao clicar em logar e estiver tudo certo ele abra a tela principal então poderia ficar assim no seu "Construtor" da sua classe principal
[code]//recebe o usuário logado com todos os dados dele
public TelaPrincipal(Usuario user){
initComponents();
//Na sua verificação ficaria mais ou menos assim
if(user.getNivel().equals("Usuario")){
//caso for usuário faça ...
}
}[/code]
e claro que quando você logar você irá criar essa tela passando o usuário logado mais ou menos assim
new TelaPrincipal(user).setVisible(true);
testa ai e avisa, flw![/quote]
Ivan
Não consegui fazer, segue em primeiro o codigo da tela de login, e em segundo a tela do menu principal, se puder me ajudar fico-lhe grato.
CODIGO LOGIN
package Senhas;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.util.Date;
import javax.swing.* ;
import utilitarios.conexao;
import javax.swing.text.MaskFormatter;
public final class Senha extends javax.swing.JFrame {
private MaskFormatter formatodata;
private static class JFrame {
private static int DO_NOTHING_ON_CLOSE;
public JFrame()
{
}
}
int conta=0;
conexao senha;
/** Creates new form Senha */
public Senha()
{
initComponents();
senha = new conexao();
senha.conecta();
txtsenha.setText("");
txtusuario.requestFocus();
}
public void mostrardados()
{
//try
{
//DESABILITA O X NO FORMULÁRIO
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//MOSTRA DATA NO FORMULÁRIO
Date data = new Date();
String dia = "" + data.getDate();
String mes = "" + String.valueOf(data.getMonth()+1);
String ano = "" + (1900 + data.getYear());
if (Integer.parseInt(dia)<=9)
dia = "0" + dia;
if (Integer.parseInt(mes)<=9)
mes = "0" + mes;
// datacada.setText(dia+"/"+mes+"/"+ano);
//MOSTRA HORA NO FORMULÁRIO
Date hora = new Date();
String thora ="" + data.getHours();
String tminuto=""+ data.getMinutes();
String tsegundo=""+ data.getSeconds();
if (Integer.parseInt(tminuto)<=9)
tminuto = "0" + tminuto;
if (Integer.parseInt(tsegundo)<=9)
tsegundo = "0" + tsegundo;
// horacada.setText(thora+":"+tminuto+":"+tsegundo);
txtusuario.requestFocus();
}
}
private void btacessarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (txtusuario.getText().equals("") || txtsenha.getText().equals(""))
{
txtusuario.requestFocus();
JOptionPane.showMessageDialog(null,"OS CAMPOS USUÁRIO E SENHA SÃO OBRIGATÓRIOS");
}
else
{
if (conta <= 1)
{
try
{
String sql = "select * from Senhas Where usuario like '"+
txtusuario.getText()+"' and senha like '"+
txtsenha.getText()+"'";
senha.executeSQL(sql);
if (senha.resultset.first())
{
//JOptionPane.showMessageDialog(null,"Olá, Bom trabalho");
new Principal.TelaPrincipal().show();
Principal.TelaPrincipal.lbUsuario.setText(senha.resultset.getString("nivel"));
dispose();
}
else
{
txtsenha.setText("");
txtusuario.setText("");
txtusuario.requestFocus();
conta++;
if (conta == 1)
JOptionPane.showMessageDialog(null,"SENHA OU USUÁRIO INCORRETO,\n\nVOÇE SÓ TEM MAIS UMA CHANCE");
else
{
JOptionPane.showMessageDialog(null,"VOÇE ESTA INABILITADO PARA USAR O SISTEMA !!!");
dispose();
}
}
}
catch(SQLException erro)
{
}
}
}
}
//COMANDO SAIR DE UM FORMULÁRIO
private void btsairActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Object[] options =
{
"Sim", "Não"
};
int i = JOptionPane.showOptionDialog(null,
"DESEJA FECHAR ESTE FORMULÁRIO ?","SAIR",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (i == JOptionPane.YES_OPTION)
{
//new Principal.TelaPrincipal().show();
System.exit(0);
}
}
//LIMPA OS CAMPOS PARA NOVO REGISTRO
private void btlimparActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txtusuario.setText("");
txtsenha.setText("");
txtusuario.requestFocus();
}
//HABILITA A TECLA ENTER
private void txtusuarioKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
int key = evt.getKeyCode();
if(key == KeyEvent.VK_ENTER)
((JTextField)(evt.getSource())).transferFocus();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Senha().setVisible(true);
}
});
}
CODIGO TELA PRINCIPAL
package Principal;
/**
*
* @author Ricardo
*/
import Cadastro.CadastroDeContas;
import Cadastro.Fornecedor;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class TelaPrincipal extends javax.swing.JFrame
{
/** Creates new form TelaPrincipal */
public TelaPrincipal()
{
initComponents();
{
if (lbUsuario.getText().equals("Usuario"))
Menu_cadastros.setEnabled(false);
}
//MOSTRA FOTO PRINCIPAL
foto.setIcon(new ImageIcon("C:/Contas Pagar Receber - JAVA/Imagens/TelaPrincipal-1.jpg"));
//DESABILITA O X NO FORMULÁRIO
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//MOSTRA DATA NO FORMULÁRIO
Date data = new Date();
String dia = "" + data.getDate();
String mes = "" + String.valueOf(data.getMonth()+1);
String ano = "" + (1900 + data.getYear());
if (Integer.parseInt(dia)<=9)
dia = "0" + dia;
if (Integer.parseInt(mes)<=9)
mes = "0" + mes;
datacada.setText(dia+"/"+mes+"/"+ano);
//MOSTRA HORA NO FORMULÁRIO
Date hora = new Date();
String thora ="" + data.getHours();
String tminuto=""+ data.getMinutes();
String tsegundo=""+ data.getSeconds();
if (Integer.parseInt(tminuto)<=9)
tminuto = "0" + tminuto;
if (Integer.parseInt(tsegundo)<=9)
tsegundo = "0" + tsegundo;
horacada.setText(thora+":"+tminuto+":"+tsegundo);
}
//COMANDO ABRE FORMULÁRIO FORNECEDOR
private void MenuItem_FornecedorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Fornecedor().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO CADASTRO DE CONTAS
private void MenuItem_ContasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new CadastroDeContas().show();
this.dispose();
}
private void Menu_cadastrosMenuSelected(javax.swing.event.MenuEvent evt) {
// TODO add your handling code here:
}
private void Menu_cadastrosItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
//new Fornecedor ().show();
//this.dispose();
}
private void Menu_cadastrosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// new Fornecedor().show();
}
private void Menu_relatoriosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
//COMANDO SAIR DE UM FORMULÁRIO
private void MenuItem_EncerrarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//if(javax.swing.JOptionPane.showConfirmDialog(null,"DESEJA ENCERRAR AS ATIVIDADES ?","ENCERRAR",
//javax.swing.JOptionPane.YES_NO_OPTION )==0)
//this.dispose();
Object[] options =
{
"Sim", "Não"
};
int i = JOptionPane.showOptionDialog(null,
"DESEJA ENCERRAR AS ATIVIDADES ?","ENCERRAR",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (i == JOptionPane.YES_OPTION)
{
//System.exit(0);
this.dispose();
//new Principal.TelaPrincipal().show();
}
}
private void MenuItem_FornecedorItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE FORNECEDORES COMPLETO
private void RelaFornecCompletoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaFornecCompleto().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE CONTAS COMPLETO
private void RelaContasCompletoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaContasCompleto().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO RELATORIO DE CONTAS FILTRADO
private void RelaContasFiltradoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Relatorio.RelaContasFiltrado().show();
this.dispose();
}
//COMANDO ABRE FORMULÁRIO DE USUARIOS
private void MenuItem_UsuariosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new Cadastro.Usuarios().show();
this.dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TelaPrincipal().setVisible(true);
}
});
}
Oi!
O seu usário e senha está aceitando espaços em branco, está correto?
Algo assim " " é válido. Se quiser evitar isso, faça:
if (txtusuario.getText().trim().isEmpty() || txtsenha.getText().trim().isEmpty())
Mas isso é opinião sua. Eu não gosto de permitir cadastro em branco de usuários, seja para usuário (obviamente) ou senha (opcional).
Sobre o seu código, eu entendo pouco de Swing, mas ao que vejo ele vai passar pelo seu if de forma independente. Ele inicia a tela para login mas ele também passa pelo seu if, ele não fica aguardando você dar um click no botão (logar) para executar a próxima linha de código, é o que estou vendo.
Acredito que você possa iniciar tudo como um usuário comum e somente habilitar/desabilitar algo depois de efetuado o login.
Se o usuário for o administrador, fazendo o login tudo será habilitado, caso contrário, basta manter o estado atual.
kra, vamus pensar um pouco…veja.
se vc continuar usando essa sua JLabel ae, onde guarda apenas “administrador” ou “usuario”, vc provavelmente tera problemas futuros pois tera q ficar tratando com jlabel.getText() trim() equals() etc…
O ideal eh q vc tenha uma classe do sistema, onde armazene isto ao entrar com o usuario e senha. Assim vc apenas usaria um get para pegar seu retorno.
seria algo como.
//classe do sistema
private static String perfilUsuario;
public void setPerfilUsuario(String perfilUsuario){
this.perfilUsuario = perfilUsuario;
}
public String getPerfilUsuario(){
return this.perfilUsuario;
}
Assim quando vc logar no seu sistema poderia apenas dar um setPerfilUsuario(), guardar seu perfil e ir dando gets para assim verificar o tipo do perfil. Ainda vc faria isso para habilitar ou naum seus JMenu/JMenuItem conforme o perfil. Bastaria vc usar um for para ir setando quais vc quer para cada perfil.
Novamente, não fique guardando isso em JLabel é uma PUTA GAMBIARRA. Encontre uma maneira JAVONICA de fazer isso, existe várias.
t+ e boa sorte.
Tá bom se quer seguir minha dicas vamos por passos então a primeira coisa seria criar uma Classe ‘Usuario’ para representar o usuário logado mais ou menos assim
[code]public class Usuario {
//variaveis inteiras que representam os níveis de acesso a cada nível
public static final int NIVEL_USUARIO = 0;
public static final int NIVEL_ADMINISTRADOR = 1;
//////////////////////
//dados do usuário
private String usuario;
private String senha;
private int nivel; //Também poderia usar String mais eu prefiro usando inteiro
/*Seus métodos Getters e Setters vem logo abaixo
*Se não sabe como cria-los estude sobre encapsulamento e métodos de getters e setters
*/
}[/code]
…
Obrigado a todos, peguei um pouco de cada ajuda e consegui sair de uma forma meio estranha, mas deu certo. Até a proxima e de novo muito obrigado a todos