Walidacja danych JTextField

0

Napisałem funkceje ktora ma sprawdzac poprawnosc wpisanych danych

	public void sprawdz(final JTextField eu){
		eu.addKeyListener(new KeyAdapter(){
		  public void keyPressed(KeyEvent e){
			    int wcisnity = e.getKeyCode();
			    switch (wcisnity){
			    case KeyEvent.VK_B:
			    	String co = JOptionPane.showInputDialog("Podales zle parametry");
			    	eu.setText(co);
			    case KeyEvent.VK_A:
			    	co = JOptionPane.showInputDialog("Podales zle parametry");
			    	eu.setText(co);
			    case KeyEvent.VK_C:
			    	co = JOptionPane.showInputDialog("Podales zle parametry");
			    	eu.setText(co);
			    }
		    
		  }
		});
		}

I gdy wpisze a,b,c wyswietla mi sie okno ze wpisałem zle parametry teraz jak zrobic aby to co wpisze w tym oknie było przekazywane do formularza ale takze bylo sprawdzane. gdy wpisze w wyskakujacym oknie a,b,c to zmiane zatwierdza i wstawia do formularza a to jest efekt niepożądany

0

Napisz metodę, która będzie sprawdzać poprawność wpisanego tekstu. Np za pomocą pętli przelatującej po wszystkich znakach w poszukiwaniu zakazanych zanków.

Po pobraniu parametru do zmiennej "co" sprawdzasz czy tekst jest poprawny przy użyciu w/w metody. Jeśli jest przypisujesz go do pola tekstowego "eu".

0

class LongTextDoc extends PlainDocument{
        private static final long serialVersionUID = -666L;
        private int maxLenght;
        public void insertString(int poz,String str,AttributeSet a)throws BadLocationException{
                if (str!=null&&getLength()<maxLenght){
                        String stary=getText(0,getLength());
                        String nowy=(stary.substring(0,poz)+str+stary.substring(poz));
                        if (check(nowy)){
                                super.insertString(poz,str,a);
                        }
                }
        }
        private boolean check(String s){
                return s.matches("^\\d+$");
        }
        public void setMaxLenght(int m){maxLenght=m;}
}
/**
 * JTextFiled przyjmujacy jedynie liczby calkowite
 *
 */
class LongTextField extends JTextField{
        private static final long serialVersionUID = -69L;
        public LongTextField(String s,int size,final int maxSize){
                super(s,size);
                doc.setMaxLenght(maxSize);
        }
        protected Document createDefaultModel(){
                doc=new LongTextDoc();
                return doc;
        }
        public long getLongValue(){
                try{
                        return Long.parseLong(getText());
                }catch(NumberFormatException e){
                        return -1;
                }
        }
        private LongTextDoc doc;
}
///////////////////////////////////////////////////////////////////////////LUB:
class Validator implements DocumentListener{
        private int lenght;
        private Color inactiveColor;
        private Color defaultColor;
        private JTextComponent target;
        public Validator(JTextComponent aTarget,int aLength){
                lenght=aLength;
                target=aTarget;
                inactiveColor=UIManager.getColor("JTextField.textBackground");
                defaultColor=aTarget.getBackground();
                validateField();
        }
        public void insertUpdate(DocumentEvent e) {
                validateField();
        }
        public void removeUpdate(DocumentEvent e) {
                validateField();
        }

        public void changedUpdate(DocumentEvent e) {
                validateField();
        }
        public void validateField(){

                if (!target.isEditable())
                        target.setBackground(inactiveColor);
                else if ((target.getText()==null||target.getText().length()<lenght))
                        target.setBackground(new Color(255,150,150));
                else
                        target.setBackground(defaultColor);
        }
}
class ValidatedTextField extends JTextField{
        private static final long serialVersionUID = 7344063624729814107L;
        private Validator validator;
        public ValidatedTextField(String s,int l,int minLenght){
                super(s,l);
                validator=new Validator(this,minLenght);
                getDocument().addDocumentListener(validator);
        }
        public void setEditable(boolean b){
                super.setEditable(b);
                if (validator!=null)
                        validator.validateField();
        }
}

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1