Olá Pessoal, Como eu faço para que o TextField() aceite só numeros e não letras, e tambem nunca passar para o proximo
qdo estiver vazio ("");
dê uma olhada no componente JFormattedTextField, ele resolve esse negocio dos numeros, qto ao preenchimento nunca fiz algo parecido, mas deva ter algum jeito…
Acho que o jeito mais correto é você adicionar um KeyListener à esse TextField para que, quando for digitado algo que não seja um número, apagar esse caractere ou qualquer coisa que você achar melhor
Quanto a não passar para o próximo, é só você setar como desabilitado os outros componentes enquanto esse TextField não for preenchido. Você pode fazer isso com um if no KeyListener que eu falei antes.
[]´s
Cara eu uso netbeans e fiz assim:
Codigo.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
CodigoKeyTyped(evt);
}
});
private void CodigoKeyTyped(java.awt.event.KeyEvent evt) {
if (!Character.isDigit(evt.getKeyChar())) {
evt.consume();
}
}
campo só aceita numeros, agora para não passar para o próximo campo vázio eu nunca fiz isso, mas tem como fazer com toda certeza. Eu imagino que com o evento focuslost voçê possa fazer isso.
falou…
Bom dia DAPEDRA,
Quanto a não passar para o proximo JTextField quando estiver vazio(""), você pode resolver usando a interface FocusListener. No focusLost você verifica se está vazio, e se estiver, você transfere o foco para o componente anterior.
Estou postando o código abaixo para você ver como funcionaria na prática.
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main extends JFrame {
JTextField[] txt;
JButton btn;
public Main () {
super("Teste");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,400);
setLayout(new FlowLayout());
txt = new JTextField[5];
Evento x = new Evento();
for (int i = 0; i < txt.length; i++) {
txt[i] = new JTextField(10);
txt[i].addFocusListener(x);
add(txt[i]);
}
btn = new JButton("Aumentar");
add(btn);
}
public static void main(String[] args) {
Main starter = new Main();
starter.setVisible(true);
}
private class Evento implements FocusListener {
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
if (((JTextField)e.getComponent()).getText().equals(""))
e.getComponent().transferFocusBackward();
}
}
}
Espero ter ajudado…
Att