ComboBox: TestEditor to ListView binding
Kirill Kirichenko
kirill.kirichenko at oracle.com
Mon Jul 7 19:50:29 UTC 2014
I have seen search box. Correct me if I'm wrong - this example just
shows how to create a custom control that has an icon, text field and a
button. What's more important to me is to be able to show a popup with
say a ListView and be able to work with it like an ordinary combobox
does (be ontop, autoclose, move with the parent window). I'm afraid
searchbox example doesn't show it.
I tried to make it from scratch - using a scene without a decoration
with a ListView inside. I think it's to burdensome to control all those
focus, windows, mouse hover and click events.
Maybe searchbox is supposed to show search results in a separate
component ? But I prefer a popup.
K
On 07.07.14 18:47, Stephen F Northover wrote:
> Hi Kirill,
>
> I looked at this again quickly and while there might be a combination of
> events and listeners that can make a combo box behave this way, you are
> better to create your own search box and manage the popup list. The
> reason for this is that any code you are likely to write that
> manipulates the combo box will be sensitive to event ordering.
>
> There is an example of a search field as part of EnsembleApp. It is
> quite complicated and fancy and is mixed in with EnsembleApp code so you
> might have to work a bit to extract a simpler version of what you are
> looking for.
>
> Hopefully Jasper is reading this right now and can whip up a hundred
> lines of code or so that do what you want.
>
> Steve
>
> On 2014-07-04, 5:48 PM, Kirill Kirichenko wrote:
>> I'm implementing a searchbox.
>> In the textfield of the combobox I'm typing a search string.
>> textProperty of the editor has an onChange listener which forms a list
>> of strings that contain the text as a substring. Then I set this list
>> of strings as a content of the drop down list of the combobox.
>> The problem is when I start selecting items in the drop down list the
>> editor field gets updated making new substring search and updating the
>> list again.
>> I want to break this dependency. I don't want to update the text
>> property when I select an item in the drop down list OR I want to
>> distinguish in the textProperty listener what caused that event - real
>> editing the field or setting the field trough binding from the list view.
>>
>> I hope I could make myself clear.
>> K
>>
>> On 05.07.2014 01:21, Stephen F Northover wrote:
>>> Hi Kirill,
>>>
>>> What exactly are you trying to do? The following (crap) listens for the
>>> value to change and then sets it back:
>>>
>>> ChangeListener<String> l = new ChangeListener<String> () {
>>> public void changed(ObservableValue observable, String
>>> oldValue,
>>> String newValue) {
>>> System.out.println("attempt to set new value: " +
>>> newValue);
>>> Platform.runLater(() -> {
>>> comboBox3.valueProperty().removeListener(this);
>>> System.out.println("restoring old value: " +
>>> newValue);
>>> comboBox3.setValue(oldValue);
>>> comboBox3.valueProperty().addListener(this);
>>> });
>>> };
>>> };
>>> comboBox3.valueProperty().addListener(l);
>>>
>>> This is not good code because it adds and removes a listener to avoid
>>> notification when the value is reset. It uses runLater() in order to
>>> stop the combo box from getting confused when the value is changed from
>>> within a changed listener.
>>>
>>> Steve
>>>
>>>
>>> On 2014-07-04, 3:09 PM, Kirill Kirichenko wrote:
>>>> JavaFX ComboBox has binding between TextEdit field and the ListView
>>>> selection such that edit field gets updated when we change the
>>>> selected item in the drop down list.
>>>> Is there a way to break this binding - when we select an item in the
>>>> list the editor field remains untouched. Where should I look at ?
>>>>
>>>>
>>>> Thanks.
>>>> K
>>>
>
More information about the openjfx-dev
mailing list