Desativar JtextField conforme clicar nos botões

11 respostas
gregorioarthur

Galera,

Seguinte!

tenho a seguinte tela de cadastro:

preciso que nela (como nos botões ao lado!) sejam feitas as inclusões, alteraçoes e exclusões de cadastros…

bom, oq preciso mesmo saber como faz é: quando a pessoa clicar no menu cadastrar (que é o menu que chama essa tela) essa tela abra com todos os campos dasabilitados, ou seja, onde nao se possa digitar nada! e dos botoes somente “Incluir”, “Excluir” e “Alterar” estajam aptos a serem clicados, onde cada um fara com que os campos fiquem de uma forma.

Então quando clicar em cadastrar, ele abilite todos os capos menos o de “Código”, este deverá continuar desativado (pois ele será incrementado automáticamente pelo ID do BD) e apenas os botoes “Gravar” e “Cancelar”, para q o cadastro seja feito e gravado ou a pessoa pare clicando no cancelar.

o mesmo ocorrerá com o “Excluir” e “Alterar” mas com os respectivos comportamentos de Excluir e Alterar…

alguem pode ajudar? ahueahueauheauhaeuh

sei muito pouco da parte de interface gráfica em JAVA por isso peço ajuda! se me ajudarem com a primeira parte ai pra Altera e exclui eu me viro!

valeu!

OBS: meu IDE é o Net Beans 6.5

11 Respostas

M

é só vc criar métodos para cada ação ai vc usa o método setEnabled() por exemplo.

public void Inclui(){ txtNome.setEnabled(true); }

você chama esse método dentro do botão Inclui que o campo Nome vai ficar aberto para digitação se quiser deixar inativo use false ao invés de true.

tendeu? XD

gregorioarthur

Certo!

mas esse esquema q vc passo ali embaixo, server tbm para os botões?

valew!

renzonuccitelli

gregorioarthur:
Certo!

mas esse esquema q vc passo ali embaixo, server tbm para os botões?

valew!

Todos os componentes de interface visual possuem um setEnable, inclusive os botões.

gregorioarthur

Surgiu uma dúvida…

Como faço um metodo que seja executado ao abrir uma janela?

por exemplo:

tenho a janela citada ali acim, queria que qndo ela abrisse ele colocasse um valor em uma variável, tipo…

quando a janela abrir ele define uma variável como false pra que todos os campos fiquem desabilitados, ai quando o cara clica no botão incluir por exemplo eu defino a veriável como true ativando os capos, pra daí envia pra outra classe que vai gravar o cadastro no BD…

alguem pode ajudar?
=D

Marky.Vasconcelos

voce abre a janela instanciando uma nova ou só setando visivel?

voce pode sobreescrever no setVisible

public class Janela extends JFrame{
@Override
public void setVisible(boolean aFlag){
super.setVisible(aFlag);
valor = false;//Aqui voce coloca como false o valor que quer
}
}
gregorioarthur

não eh bem isso, mas pensei assim, acabei de testar até…

ou coloquei uma variável que recebe por default um valor como “false” ai qndo eu clico no botao incluir ela muda para True ativando os campos que eu quero…

porém surgiu uma outra dúvida, qndo ela muda para true, os campos do Jframe continuam desabilitados…

como faço para que eles se ativem? existe alguma forma de dar tipo um “refresh” nos campos do Jframe, pra que ele pegue o novo valor da váriável?

M

acredito que vc tenha que chamar o método passando a variável flag como parâmetro :slight_smile:

Marky.Vasconcelos

Nao é só mudar a flag e esperar os componentes mudarem.

O seguinte método seta em todos os JComponents

public void setEnabled(Container cont, boolean aFlag){
for(Component comp : cont.getComponents()){=
if(comp instanceof JComponent)
((JComponent)comp).setEnabled(aFlag);
else if(comp instanceof Container)
setEnabled((Container)comp,aFlag);
}
gregorioarthur

OK! decidi fazer separado cada tela…

=D

mas agora surgiu um probrlma…

(detalhe que estou tirando tdas as duvidas sobre o programa!! tem algum problema? se tiver me fale!)

eu tenho a seguinte pesquisa SQL:

public int PegaID(){

        BancoDados Bd = new BancoDados();
        int CodCliente = 0;

        try{
            Bd.Conecta();

            Stm = Con.createStatement();
            Rs = Stm.executeQuery("SELECT MAX(cadastro.IdCliente) FROM cadastro;"); // aqui tem a pesquisa onde eu pego o valor maximo do ID

            while(Rs.next()){
                 CodCliente = Rs.getInt("IdCliente"); // e aqui o Result Set, porém, pela minha pesquisa ser específica, axo que não precisa do RS? certo?
            }

            Bd.Fecha();
            return CodCliente;
        }
        catch(SQLException Erro){
            JOptionPane.showMessageDialog(null,"Não foi possível executar o comando SQL. Erro:\n"+Erro,".:: Erro - SCC ::.",JOptionPane.ERROR_MESSAGE);
            return 0;
        }
    }

Conforme os comentários acima, como faço pra pega o valor direto pelo RS, sem precisa do WHILE e joga direto na variável CodCliente?

valew! :shock:

Enadrov

Cara aqui eu fiz o seguinte , Logo depois que eu criei o JTextField eu desabilitei o mesmo.

JTextField <nome> = new JTextField(20); nome.setEnabled(False);

ai depois adicionei a um painel. Aqui funcionou direitinho

gregorioarthur

Manow! Post de 2009 mas valeu pelo ajuda! eahuaehuaehuaehu, nem sabia q eu tinha perguntado isso! aliás, q tela de cadastro feia essa! eagaehaehhaehaeuhuae hoje esse sistema ta bem mis evoluido… é web e tals… mas cara, é isso ai! ajudar sempre!

=D

Criado 26 de maio de 2009
Ultima resposta 8 de ago. de 2011
Respostas 11
Participantes 5