Bom dia pessoal,
Estou com um probleminha que deve ser algo simples :) mas to meio perdido, que é o seguinte:
Tenho um jFrame principal(com 3 abas) e 3 jDialog que chamo pra cadastrar algumas coisas tudo ok por enquanto... Então precisei de algumas validações, que seriam dependendo de quem logar deve ter acesso apenas a uma aba.
Criei uma outra jDialog e coloquei um campo de senha, um jComboBox e um botão, para quando escolher uma opção no combo liberar ou desabilitar as abas... A princípio os comandos eu pesquisei e achei, jTabbedPane1.setSelectedIndex(2) para abrir na aba 3
e jTabbedPane1.setEnabledAt(2, true) para habilitar a aba 3 por exemplo. Mas o que ocorre é que sempre ta vindo tudo liberado…
Segue o código do botão da jDialog(que escolhe no combo e deveria habilitar e desabilitar as abas):
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (!jPasswordField1.getText().equalsIgnoreCase("123")) {
JOptionPane.showMessageDialog(rootPane, "Senha errada. Tente a senha: 123", null, JOptionPane.INFORMATION_MESSAGE);
} else if (jComboBox2.getSelectedIndex() == 1) { //a opção 0 do combo vai liberar todas as abas
jTabbedPane1.setSelectedIndex(0);
jTabbedPane1.setEnabledAt(0, true);
jTabbedPane1.setEnabledAt(1, false);
jTabbedPane1.setEnabledAt(2, false);
jDialog4.dispose();
} else if (jComboBox2.getSelectedIndex() == 2) {
jTabbedPane1.setSelectedIndex(1);
jTabbedPane1.setEnabledAt(1, true);
jTabbedPane1.setEnabledAt(0, false);
jTabbedPane1.setEnabledAt(2, false);
jDialog4.dispose();
} else if (jComboBox2.getSelectedIndex() == 3) {
jTabbedPane1.setSelectedIndex(2);
jTabbedPane1.setEnabledAt(2, true);
jTabbedPane1.setEnabledAt(0, false);
jTabbedPane1.setEnabledAt(1, false);
jDialog4.dispose();
}
}
Pensei nas abas já iniciarem desabilitadas e depois eu só habilitava a que eu queria (menos código), mas desabilitando a propriedade enabled da jTabbedPane sempre fica tudo desabilitado…
Grato
[quote=jefers0n]Bom dia pessoal,
Estou com um probleminha que deve ser algo simples :) mas to meio perdido, que é o seguinte:
Tenho um jFrame principal(com 3 abas) e 3 jDialog que chamo pra cadastrar algumas coisas tudo ok por enquanto... Então precisei de algumas validações, que seriam dependendo de quem logar deve ter acesso apenas a uma aba.
Criei uma outra jDialog e coloquei um campo de senha, um jComboBox e um botão, para quando escolher uma opção no combo liberar ou desabilitar as abas... A princípio os comandos eu pesquisei e achei, jTabbedPane1.setSelectedIndex(2) para abrir na aba 3
e jTabbedPane1.setEnabledAt(2, true) para habilitar a aba 3 por exemplo. Mas o que ocorre é que sempre ta vindo tudo liberado…
Segue o código do botão da jDialog(que escolhe no combo e deveria habilitar e desabilitar as abas):
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (!jPasswordField1.getText().equalsIgnoreCase("123")) {
JOptionPane.showMessageDialog(rootPane, "Senha errada. Tente a senha: 123", null, JOptionPane.INFORMATION_MESSAGE);
} else if (jComboBox2.getSelectedIndex() == 1) { //a opção 0 do combo vai liberar todas as abas
jTabbedPane1.setSelectedIndex(0);
jTabbedPane1.setEnabledAt(0, true);
jTabbedPane1.setEnabledAt(1, false);
jTabbedPane1.setEnabledAt(2, false);
jDialog4.dispose();
} else if (jComboBox2.getSelectedIndex() == 2) {
jTabbedPane1.setSelectedIndex(1);
jTabbedPane1.setEnabledAt(1, true);
jTabbedPane1.setEnabledAt(0, false);
jTabbedPane1.setEnabledAt(2, false);
jDialog4.dispose();
} else if (jComboBox2.getSelectedIndex() == 3) {
jTabbedPane1.setSelectedIndex(2);
jTabbedPane1.setEnabledAt(2, true);
jTabbedPane1.setEnabledAt(0, false);
jTabbedPane1.setEnabledAt(1, false);
jDialog4.dispose();
}
}
Pensei nas abas já iniciarem desabilitadas e depois eu só habilitava a que eu queria (menos código), mas desabilitando a propriedade enabled da jTabbedPane sempre fica tudo desabilitado…
Grato[/quote]
Caso tenha uma maneira mais fácil de fazer me informem por gentileza, pois achei que assim seria melhor, mas se der pra simplificar mais melhor 
Obrigado
Ola, estranho, a primeira vista o código me parece que devera funcionar.
Tente deixar todas desabilitadas e conforme a opção que voce seleciona ao iniciar somente habilite as que forem necessarias.
Para ter certeza que o desabilitar está funcionando, faça um código básico e no constructor do jframe, após a criação dos componentes ou no proprio bloco de criação do tabbedPane coloque para desativar todas, e sem mais outra ação, ou então tente um debug.
Uma dica, não tenho este código em mãos agora (vou procurar aqui no PC depois), mas já vi um exemplo da SUN que inseria um pequeno botão X (fechar) em cada aba e tinha opções de abri-las novamente, acredito que fica mais profissional.
:thumbup:
Boa tarde pessoal,
Consegui resolver, nem sei bem como :)...
Mostrei a meu colega e ele me disse que achava que tinha que instanciar no main… Como fiz tudo automático com o netbeans eu só tinha arrastando os componentes e programado ± os eventos… é um trabalho acadêmico, eu trabalho (vocês irão rir
) com PowerBuilder, mas gosto de java. Fiz o seguinte, instanciei um novo jFrame e deu aviso que tinha que ser “final” dai mandei mudar pra final e resolveu… segue o código, tirei o que ta comentado e adicionei o “nj”.
public static void main(String args[]) {
final NewJFrame nj = new NewJFrame(); // << adicionado
nj.login();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// new NewJFrame().setVisible(true); << retirado
nj.setVisible(true); << adicionado
}
});
Ainda não sei bem o motivo de porque funcionou, se quiserem me explicar mais tecnicamente agradeço… Se não for pedir demais…
Abraço.