Pergunta

Eu tenho um campo de texto que está ligada com Integer variável, de modo que quando o usuário entra número neste campo, o mecanismo de ligação automaticamente converte texto em Integer e define esse valor em var. O problema é que, uma vez que usuário digita o texto no campo de texto, que o mecanismo de ligação é converter apenas valores, e se os tipos de usuários algumas cartas para ele, a ligação não ativar porque não há nenhum valor jurídico dentro do campo de texto. O que seria necessário em tal situação, a ligação tem de mudar gatilho com valor nulo, então eu tenho nulo no meu Integer var.

Assim, se o usuário teria deixado este campo vazio ou algo que não é número, a ligação terá de gatilho propagação valor nulo; não ignorar evento ... Como eu poderia fazer isso sem propgramming eventos no campo de texto?

é o Java de ligação capaz de mudar seu comportamento padrão?

Foi útil?

Solução

Além de alterar o comportamento do mecanismo de ligação, você pode colocar um formatador para o TextField que só aceita números. Você precisa estender javax.swing.text.DefaultFormatter para isso. E você, então, usar um JFormattedTextField em vez de um JTextField normal.

O resultado seria que você só tem uma entrada válida no seu campo de texto e você não tem que fazer qualquer coisa fora do valores incorretos.

Outras dicas

O que você precisa é JFormattedTextField e NumberFormat .

Suporte balanço para entrada de texto restrita é terrível. JFormattedTextField lhe dará uma experiência de usuário totalmente miserável. Tal como acontece com a maioria dos trabalhos Balanço interessante, ignorar o JComponent e ir para o modelo. Neste caso Document, em particular DocumentFilter.

Quando isso acontece eu tenho uma simples aplicação Swing que os campos usa texto limitados a inteiros que eu preparado anteriormente. Descrição. Fonte (em particular createNumberDocument ver).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top