Somente números no JTextField  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
bzy
JavaGuru
[Avatar]

Membro desde: 23/08/2006 19:34:00
Mensagens: 215
Localização: São Paulo - Guarulhos
Offline

Procurei aqui mas não achei então vou perguntar:
Tem algum método prático para só permitir números em um JTextField?

Já aproveitando, alguém sabe algum link direto para baixar o Driver (.JAR) do FireBird e o para BD do Access( ).
Value.

SCJP - Sun Certified Java Programmer
http://meumundojava.blogspot.com/
Memento mori.
[WWW] [ICQ]
RMF
Debugger

Membro desde: 25/08/2006 10:37:09
Mensagens: 60
Offline


Brother, ao invés de você instanciar o JTextField, utilize a classe LimitedIntegerJTextField (em anexo) que além de permitir apenas números, ainda pode-se definir o maxlength do campo.

Qualquer dúvida estamos por aqui.

Abraço.
 Nome do arquivo LimitedIntegerJTextField.java [Disk] Download
 Descrição Permite que o usuário digite apenas números num JTextField.
 Tamanho 1 Kbytes
 Baixado:  2494 vez(es)

zizegaitero
HelloWorld
[Avatar]

Membro desde: 21/07/2006 10:58:06
Mensagens: 10
Offline

eu fiz esse metodo

public void ValidaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0){
try {
valor = Long.parseLong(Numero.getText());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
Numero.grabFocus();
}
}
}

ai vc chama o metodo passando como parametro o JTextField
[MSN]
bzy
JavaGuru
[Avatar]

Membro desde: 23/08/2006 19:34:00
Mensagens: 215
Localização: São Paulo - Guarulhos
Offline

Valeu!

SCJP - Sun Certified Java Programmer
http://meumundojava.blogspot.com/
Memento mori.
[WWW] [ICQ]
marcoscorso
Virtual Machine Man

Membro desde: 19/09/2006 11:04:27
Mensagens: 612
Offline

zizegaitero , nao consegui rodar o teu codigo no meu ...

ai vai ...


//package br.com.patterns.chain;

import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JTextField;
import java.awt.Rectangle;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import javax.swing.JButton;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.*;


public class Frame1 extends JFrame
{
private JTextField jTextField1 = new JTextField();

public Frame1()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}

}

private void jbInit() throws Exception
{
this.getContentPane().setLayout(null);
this.setSize(new Dimension(400, 300));
jTextField1.setText("jTextField1");
jTextField1.setBounds(new Rectangle(15, 35, 165, 20));
this.getContentPane().add(jTextField1, null);
}


public void ValidaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0){
try {
valor = Long.parseLong(Numero.getText());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
Numero.grabFocus();
}
}
}


public static void main(String args[])
{
new Frame1().show();
}
}
zizegaitero
HelloWorld
[Avatar]

Membro desde: 21/07/2006 10:58:06
Mensagens: 10
Offline

vc pode usar no momento que sai o foco do campo.
vc chama o método passando como parametro o nome do campo

ex: ValidaNumero(Campo);

vlw
[MSN]
nbluis
GUJ Master
[Avatar]

Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline

Cara faz uma annotation que verifica isso, o codigo fica bem mais fácil assim....

Luis Eduardo Bohrer

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

É sempre melhor impedir que o usuário faça errado a abrir uma caixa de diálogo na cara dele depois que ele errou.

Uma solução adequada é esta:

Former LIPE.
[ICQ]
lepopps
What is classpath?

Membro desde: 17/09/2008 19:53:32
Mensagens: 6
Offline

Ola, amigo .... me desculpe a pergunta mas, como devo utilizar essa classe ?? tipo igual a classe JtextFieldLimited ..... tfNomeFantasia.setDocument(new jTextFieldLimit(60)); ???? ou como devo fazer ???




Filipe Sabella wrote:É sempre melhor impedir que o usuário faça errado a abrir uma caixa de diálogo na cara dele depois que ele errou.

Uma solução adequada é esta:
mvargens
JavaEvangelist

Membro desde: 12/05/2008 16:20:26
Mensagens: 301
Localização: Embu
Offline

Eu faria assim:


http://www.exampledepot.com/egs/javax.swing.text/formtext_FormTextNum.html

This message was edited 1 time. Last update was at 03/03/2009 21:40:10

[Email]
daniel.pedro_fernandes
What is classpath?
[Avatar]

Membro desde: 17/02/2010 11:33:07
Mensagens: 5
Offline

zizegaitero wrote:eu fiz esse metodo

public void ValidaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0){
try {
valor = Long.parseLong(Numero.getText());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
Numero.grabFocus();
}
}
}

ai vc chama o metodo passando como parametro o JTextField


Valeu zizegaitero! Deu certinho para minha necessidade... Muito obrigado mesmo. Os créditos serão dados.
[MSN]
claudiocgalvao
Entusiasta Java

Membro desde: 05/02/2009 07:05:40
Mensagens: 24
Localização: São Bernardo do Campo - SP
Offline

daniel.pedro_fernandes wrote:
zizegaitero wrote:eu fiz esse metodo

public void ValidaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0){
try {
valor = Long.parseLong(Numero.getText());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
Numero.grabFocus();
}
}
}

ai vc chama o metodo passando como parametro o JTextField



Valeu zizegaitero! Deu certinho para minha necessidade... Muito obrigado mesmo. Os créditos serão dados.



Também consegui segue abaixo:

//Coloquei o método na minha classe Utilitaria
public static void validaNumero(JTextField Numero) {
long valor;
if (Numero.getText().length() != 0) {
try {
valor = Long.parseLong(Numero.getText());
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números", "Informação", JOptionPane.INFORMATION_MESSAGE);
Numero.grabFocus();// foca o campo
Numero.setText(""); //limpa o campo
}
}
}


//Quando perde o foco passo JTextField
private void bankCodFieldFocusLost(java.awt.event.FocusEvent evt) {
JTextField field = (JTextField) evt.getComponent();
Utilitaria.validaNumero(field);
}

Espero que ajude mais pessoas, com esse exemplo!

Graduando Bacharel em Sistemas da Informação.
Universidade Bandeirante de São Paulo - UNIBAN
Formatura ano 12/2010.
[Email]
viniciusalvess
Java Ninja
[Avatar]

Membro desde: 02/09/2008 12:17:08
Mensagens: 259
Offline

Respondendo ai , um que funciona para quem precisar

brenowbc
Debugger
[Avatar]

Membro desde: 03/06/2011 22:08:29
Mensagens: 58
Localização: Petrolina-PE
Offline

galera o tópico é meio antigo, só que vim procurar isso e não achei uma resposta fácil por aqui.
mas juntanto umas 2 idéias achei um jeito muito simples, e faz essa verificação em tempo real, eis o código:



para substituir para que só fiquem letras, basta alterar no replaceAll:


espero que tenha sido util, um abraço a todos.

Usando Default Table Model??? pare com isso: http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez/

créditos para o Saab, Java Simples.

------------------------------------------------------------------------------------------------------------------------------

"Ensinar, é aprender duas vezes!" (Joseph Joubert).
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

brenowbc wrote:galera o tópico é meio antigo, só que vim procurar isso e não achei uma resposta fácil por aqui.
mas juntanto umas 2 idéias achei um jeito muito simples, e faz essa verificação em tempo real, eis o código


Simples, mas infelizmente furado. Não use eventos para tratar entradas de teclas em componentes, pois em 90% das vezes, eles não são multiplataforma e eles escondem problemas.
Por exemplo, seu código falha se o usuário der CTRL+C num texto, e cola-lo no JTextField com o mouse (não haverá keypress nesse caso).

A forma correta de limitar um JTextField é através do objeto Document relacionado a ele. Eis aqui uma classe que limita o JTextField só a números, e limita também a quantidade máxima de dígitos dele:
http://www.guj.com.br/java/107425-como-fazer-para-o-campo-textfield-receber-so-numeros#579803

E aqui está o artigo que explica como um Document funciona:
http://www.guj.com.br/articles/29

E aqui um artigo falando de Document, DocumentFilter e outros recursos:
http://download.oracle.com/javase/tutorial/uiswing/components/generaltext.html

This message was edited 1 time. Last update was at 10/07/2011 18:41:16


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team