[color=red] Bem galera, como todo mundo que está começando, eu tb tive essa dúvida. Como criar um JTextField que aceite somente números?
Pois bem! Tentei criar um que aceita somente números (0, 1,2,3…,9) e UMA VIRGULA SÓ!
Se o usuário errar na digitação, o JTextField se anula TOTALMENTE.
O que vcs acham?
Desde já obrigado!
[/color]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;;
class JText extends JFrame{
private JLabel txt;
private JTextField txtNumber;
private JButton btoOk;
public JText(){
txt = new JLabel("Digite um número:");
txtNumber = new JTextField("");
btoOk = new JButton("Ok!");
Container co = getContentPane();
co.setLayout(new GridLayout(2,2));
co.add(txt);
co.add(txtNumber);
co.add(new JLabel(""));
co.add(btoOk);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
txtNumber.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
onlyNumbers(txtNumber, e.getKeyCode());
}
});
}
public static void onlyNumbers(JTextField c, int key){
boolean validade;
validade = false;
for(int i = 96; i<=105; i++){
if((key == i || key==(i-48) || key == 8) || (key == 110 && (c.getText().indexOf(",")==c.getText().length()-1))){
validade = true;
break;
}
}
if(validade){
}
else{
c.setText("");
}
}
public static void main(String args[]){
JText j = new JText();
j.pack();
j.setResizable(false);
j.setVisible(true);
}
}