I like how I can force a TextField to be essentially a NumberField by giving it a Property, like so
final Property<Long> property = new ObjectProperty<Long>(42);
final TextField tf = new TextField("SomeNumber", property);
Now, if I want to get the value of the TextField as a Long, instead of calling tf.getValue() and then converting the String into a Long manually, which I think is very ugly, I can just call
long value = property.getValue();
I want to the same thing with ComboBox. I initialize the ComboBox with a bunch of Longs.
Long ns = {10000000L, 25000000L, 50000000L, 75000000L, 100000000L};
List<Long> options = Arrays.asList(ns);
final ComboBox cb = new ComboBox("SomeNumbers", options);
Say the user picks a value in the comboBox. When I call cb.getValue(), I get back a Long. So far, so good.
But, I also want the ComboBox to be editable so that I can type in a new number if I want. So I add the following.
cb.setTextInputAllowed(true);
cb.setNewItemsAllowed(true);
Now, if I type in a new number into the comboBox, cb.getValue() returns me a String. I need to manually convert the String into a Long, which is something I’m trying to avoid.
So, is there a way to force the ComboBox to be of type Long? The end result is that I want something that’d let me do
long cbValue = <SOMETHING>.getValue()