0

I'm currently working on a search method in school and I'm stuck in a newbie mistake.

I havent been programming for long and I tried searching the internet for solutions but couldnt find any. I would need to get a number range from 1-10 from the textfield and then put it as an int. Once I've done that I would have to send it to my search method which I am working on. Thanks in advance peeps.

String Value = txfSort.getText();
int NumberValue = Integer.valueOf(Value);

2 Answers2

1

Probably you should first limit the input of textFields to nummeric values. You can help your self with question here: What is the recommended way to make a numeric TextField in JavaFX?

public class NumberTextField extends TextField
{

    @Override
    public void replaceText(int start, int end, String text)
    {
        if (validate(text))
        {
            super.replaceText(start, end, text);
        }
    }

    @Override
    public void replaceSelection(String text)
    {
        if (validate(text))
        {
            super.replaceSelection(text);
        }
    }

    private boolean validate(String text)
    {
        return text.matches("[0-9]*");
    }
}

Code by: Burkhard

Above code would automaticly check on entry if input is ok. So then you just check, if value is > 0 and < 10. If that is true you just call your method and use value of textField.

One way of doing described would be this:

int value = Integer.valueOf(txfSort.getText());
if(value > 0 && value < 10)
{
   myMethod(value);
}
Community
  • 1
  • 1
Jure
  • 799
  • 6
  • 25
  • Thank you, I now have a bigger understanding of how it works and I should be able to continue working on my project. –  Feb 16 '16 at 08:24
0

try that one:

textField.addKeyListener(new KeyAdapter(){
            public void keyTyped(KeyEvent e) {
                char caracter = e.getKeyChar();
                if (((caracter < '0') || (caracter > '9')) // for numbers only
                        && (caracter != '\b')) {
                    e.consume();
                }
                if (Integer.valueOf(textField.getText() + caracter) > 10) {
                    e.consume(); // if on the text field the numbers are bigger 
                                 // than 10, consumes the last number typed
                }   
            }
        });