validacion de datos en textfield

Ariel
01 de Julio del 2005
hola, espero que me ayuden, tengo que ahcer un juego, el cual consiste en uan matriz de 3x3, ingresar numeros a ella y comprobar si la suma de las filas y las columnas es 15, si es asi el jugador gana, les dejo el codigo y tb tengo unas preguntas:

import java.awt.*;
import java.awt.event.*;
public class juego extends Frame implements ActionListener{

//String n1,n2,n3,n4,n5,n6,n7,n8,n9;
int numero1,numero2,numero3,numero4,numero5,numero6,numero7,numero8,numero9;
int suma1,suma2,suma3,suma4,suma5,suma6,suma7,suma8;


Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Panel p5=new Panel();

Label l1=new Label("");
Label l2=new Label("");
Label l3=new Label("");
Label l4=new Label("");
Label l5=new Label("");
Label l6=new Label("");
Label l7=new Label("");
Label l8=new Label("");
Label l9=new Label("");
Label l10=new Label("");
Label l11=new Label("");
Label l12=new Label("");
Label l13=new Label("");
Label l14=new Label("");


TextField t1=new TextField(10);
TextField t2=new TextField(10);
TextField t3=new TextField(10);
TextField t4=new TextField(10);
TextField t5=new TextField(10);
TextField t6=new TextField(10);
TextField t7=new TextField(10);
TextField t8=new TextField(10);
TextField t9=new TextField(10);
TextField t10=new TextField(15);


Button com=new Button("Comparar");
Button ini=new Button("Limpiar");

public juego() {


//****************************************************//
p2.setLayout(new GridLayout(6,2));

p2.add(l4);
p2.add(l5);
p2.add(l6);
p2.add(t1);
p2.add(t2);
p2.add(t3);
p2.add(t4);
p2.add(t5);
p2.add(t6);
p2.add(t7);
p2.add(t8);
p2.add(t9);
p2.add(l10);
p2.add(l11);
p2.add(l12);
p2.add(ini);


//*****************************************************//

p1.setLayout(new BorderLayout());
t10.setBackground(Color.white);
t10.setForeground( Color.red );
this.add("North",p2);
this.add("Center",t10);
this.add("South",com);

com.addActionListener(this);
ini.addActionListener(this);


}


public void actionPerformed(ActionEvent e){

if(e.getSource()==com){
numero1=Integer.parseInt(t1.getText());
numero2=Integer.parseInt(t2.getText());
numero3=Integer.parseInt(t3.getText());
numero4=Integer.parseInt(t4.getText());
numero5=Integer.parseInt(t5.getText());
numero6=Integer.parseInt(t6.getText());
numero7=Integer.parseInt(t7.getText());
numero8=Integer.parseInt(t8.getText());
numero9=Integer.parseInt(t9.getText());

suma1=numero1+numero2+numero3;
suma2=numero4+numero5+numero6;
suma3=numero7+numero8+numero9;
suma4=numero1+numero4+numero7;
suma5=numero2+numero5+numero8;
suma6=numero3+numero6+numero9;
suma7=numero1+numero5+numero9;
suma8=numero3+numero5+numero7;
}

if(numero1<=0 || numero1>9 || numero2<=0 || numero2>9 || numero3<=0 || numero3>9 || numero4<=0 || numero4>9 || numero5<=0 || numero5>9 || numero6<=0 || numero6>9 || numero7<=0 || numero7>9 || numero8<=0 || numero8>9 || numero9<=0 || numero9>9){
t10.setText("Ingrese los numeros correctamente");
}
else{
if(suma1==15 && suma2==15 && suma3==15 && suma4==15 && suma5==15 && suma6==15 && suma7==15 && suma8==15){
t10.setText("Usted Gana");}
else{
t10.setText("Usted Pierde");}
}

if(e.getSource()==ini){
t10.setText("");
t1.setText("");
t2.setText("");
t3.setText("");
t4.setText("");
t5.setText("");
t6.setText("");
t7.setText("");
t8.setText("");
t9.setText("");
}

}


public static void main(String arg[]){
juego b =new juego();
b.show();
b.pack();
b.setTitle("Juego de los numeros = 15");
}

}

ahora las preguntas: como puedo restringir el ingreso de datos al textfield, por ej. solo numeros enteros y no doubles o letras, y lo otro es que como podria hacer para que cada campo en dond eingreso los numeros solo tengo un espacio, por ej. que pueda ingresar el 6 y que no deje ingresar 66 o 666 ... etc. esto quiere decir que al ingresar un numero se cambie de inmediato al otro campo

ojala me puedan ayudar de antemano gracias

jtacosta
01 de Julio del 2005
Te envio esta clase es de swuimg pero para awt tambien valdra. La clase es una extension de la clase JTextfield en el que escirbo metodos nuevos o sobreescribo metodos. No te asustes es muy facilita;

package utilidades.componentes;

import java.awt.*;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.KeyAdapter;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import utilidades.gui.DisenyoPantalla;
import utilidades.gui.JTextFieldLimite;
import contabilidad.gui.Estaticas;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author Jorge TA
* @version 1.0
*/

public class TextFieldT extends JTextField {
JButton botonPulsar = null;
KeyAdapter keyAd;
KeyAdapter keyNumeros;
FocusAdapter focusGain ;

public TextFieldT() {
setFont(DisenyoPantalla.texto1);
setForeground(DisenyoPantalla.colorTexto);
setDisabledTextColor(Color.black);
focusGain = new FocusAdapter() {
public void focusGained(FocusEvent e) {
focus_Gained(e);
}
};
this.addFocusListener(focusGain);

}
public TextFieldT(JButton botonPulsar) {
this.botonPulsar = (JButton)botonPulsar;
setFont(DisenyoPantalla.texto1);
setForeground(DisenyoPantalla.colorTexto);
setDisabledTextColor(Color.black);

focusGain = new FocusAdapter() {
public void focusGained(FocusEvent e) {
focus_Gained(e);
}
};
this.addFocusListener(focusGain);
keyAd = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
key_Pressed(e);
}
};
this.addKeyListener(keyAd);
}
void key_Pressed(KeyEvent e) {
//System.out.println("Holalalalalla");
if(e.getKeyCode()==e.VK_ENTER){
botonPulsar.doClick();
}

}
void keyNumeros_Pressed(KeyEvent e) {
//System.out.println("Holalalalalla");
if(e.getKeyCode()==e.VK_1||e.getKeyCode()==e.VK_2
||e.getKeyCode()==e.VK_3||e.getKeyCode()==e.VK_4
||e.getKeyCode()==e.VK_5||e.getKeyCode()==e.VK_6
||e.getKeyCode()==e.VK_7||e.getKeyCode()==e.VK_8||e.getKeyCode()==e.VK_9
||e.getKeyCode()==e.VK_0){

}

}

public TextFieldT(JButton botonPulsar,int limite) {
this.botonPulsar = (JButton)botonPulsar;
setFont(DisenyoPantalla.texto1);
setForeground(DisenyoPantalla.colorTexto);
setDisabledTextColor(Color.black);
// setSelectionStart(0);
// setSelectionEnd(4);
setDocument(new JTextFieldLimite(limite));
keyAd = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
key_Pressed(e);
}
};
this.addKeyListener(keyAd);
focusGain = new FocusAdapter() {
public void focusGained(FocusEvent e) {
focus_Gained(e);
}
};
this.addFocusListener(focusGain);
}

public TextFieldT(int limite) {
setFont(DisenyoPantalla.texto1);
setDisabledTextColor(Color.black);

setForeground(DisenyoPantalla.colorTexto);
setDocument(new JTextFieldLimite(limite));
focusGain = new FocusAdapter() {
public void focusGained(FocusEvent e) {
focus_Gained(e);
}
};
this.addFocusListener(focusGain);
}

public void setBounds(Rectangle r) {
setBounds(r.x, r.y, r.width, DisenyoPantalla.altoTexto);
setMinimumSize(new Dimension(r.width,DisenyoPantalla.altoTexto));
setPreferredSize(new Dimension(r.width,DisenyoPantalla.altoTexto));
}

/**
* Para el caso en el que andemos con GridBagLayout
*/
public void setBounds(int ancho){
setMinimumSize(new Dimension(ancho,DisenyoPantalla.altoTexto));
setPreferredSize(new Dimension(ancho,DisenyoPantalla.altoTexto));
}

/**
* Método setBoundsDiaMes:
* no permite introducir un número mayor a la longitud de anchoDiaMes
*/
public void setBoundsDiaMes(){
setBounds(DisenyoPantalla.anchoDiaMes);
}

/**
* Método setBoundsAnyo:
* no permite introducir un número mayor a la longitud de anchoAnyo
*/
public void setBoundsAnyo(){
setBounds(DisenyoPantalla.anchoAnyo);
}



void focus_Gained(FocusEvent e) {
if(getText()!=null && !getText().trim().equals("")){
this.setSelectionStart(0);
int longitud = this.getText().length();
this.setSelectionEnd(longitud);
}
}
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if(!enabled)
setBackground(new Color(212,208,200));
else
setBackground(Color.white);

}

public void setEnabled(boolean enabled,Color fondo) {
super.setEnabled(enabled);
if(!enabled)
setBackground(fondo);
else
setBackground(Color.white);

}



}

TE pongo tb la clase jtexfieldLimite que sirve para limitar los campos del textfield

package utilidades.gui;

/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/

//import com.sun.java.swing.text.*;
import javax.swing.text.*;
public class JTextFieldLimite extends PlainDocument {
private int limit;
// optional uppercase conversion
private boolean toUppercase = false;

public JTextFieldLimite(int limit) {
super();
this.limit = limit;
}

public JTextFieldLimite(int limit, boolean upper) {
super();
this.limit = limit;
toUppercase = upper;
}

public void insertString
(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null) return;

if ((getLength() + str.length()) <= limit) {
if (toUppercase) str = str.toUpperCase();
super.insertString(offset, str, attr);
}
}
}


Espero que te sirva.
Saludos