Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Связывание свойств из списка со свойствами визуальных компонент / 23 сообщений из 23, страница 1 из 1
17.11.2015, 14:24
    #39105601
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Есть класс, описывающий параметры
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public class Parameter
{
    private String name;
    private String value;

    public Parameter(String name, String value) 	
    {
	this.name = name;
	this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


Инициализация
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public LoadParameters()
{
	List<Parameter> parameters = new ArrayList<Parameter>();
	parameters.add(new Parameter("X", ""));
	parameters.add(new Parameter("Y", ""));
	parameters.add(new Parameter("Z", ""));
	parameters.add(new Parameter("Y", ""));
}



На основе списка параметров строится форма
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
        for (Parameter parameter : parameters) {
            JLabel labelParamName = new JLabel(parameter.getName());
            builder.append(labelParamName);

            JTextField edtParamValue = new JTextField();
            builder.append(edtParamValue);

        }
...


Требуется при вводе данных в контрол JTextField (edtParamValue ) "пробрасывать" введенные значение в свойство value соответствующего экземпляра Parameter ?
Можно конечно в Parameter добавить поле ID и создавать JTextField с именем на основе этого ID, а потом в цикле по всем контролам ... и присвоить значения, но мне этот вариант как-то не нравится
...
Рейтинг: 0 / 0
17.11.2015, 15:06
    #39105665
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
1) Возьмите JavaFX, там есть binding.
2) Binding для Swing существует, но он недоделан (better beans binding), не развивается и вообще давно заброшен. В принципе, пользоваться можно, но станартных выкрутасов JavaBeans типа индексированых свойств там нет.
3) Если использовать WindowBuilder Pro WYSIWYG, то там достаточно просто конфигурируется binding и потом по коду не сложно разобраться.
4) NetBeans, вроде тоже поддерживает binding для Swing. Никогда не пользовался.
5) Обычно binding для JavaBeans требует PropertyChangeListener/PropertyChangeSupport. Если разобраться с этой концепцией, то можно и ручками забабахать простенький фреймверк.
...
Рейтинг: 0 / 0
17.11.2015, 15:17
    #39105679
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Blazkowicz1) Возьмите JavaFX, там есть binding.
2) Binding для Swing существует, но он недоделан (better beans binding), не развивается и вообще давно заброшен. В принципе, пользоваться можно, но станартных выкрутасов JavaBeans типа индексированых свойств там нет.
3) Если использовать WindowBuilder Pro WYSIWYG, то там достаточно просто конфигурируется binding и потом по коду не сложно разобраться.
4) NetBeans, вроде тоже поддерживает binding для Swing. Никогда не пользовался.
5) Обычно binding для JavaBeans требует PropertyChangeListener/PropertyChangeSupport. Если разобраться с этой концепцией, то можно и ручками забабахать простенький фреймверк.
Значит если только вариант 5. Я на java на уровне джуниора - пишу редко. Мож тогда проще забить и циклом по ID? )))
...
Рейтинг: 0 / 0
17.11.2015, 15:18
    #39105681
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    for (Parameter parameter : parameters) {
        JLabel labelParamName = new JLabel(parameter.getName());
        builder.append(labelParamName);

        JTextField edtParamValue = new JTextField();
        builder.append(edtParamValue);

        parameter.addPropertyChangeListener(event -> {
              String newText = String.valueOf(event.getNewValue());
              switch(event.getPropertyName()){
                   case "name"  : labelParamName.setText(newText); break;
                   case "value" : edtParamValue.setText(newText); break;
              }
        });
    }
...
Рейтинг: 0 / 0
17.11.2015, 15:20
    #39105687
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Parameter дописать по примеру тут:
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html
...
Рейтинг: 0 / 0
17.11.2015, 15:35
    #39105705
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
PropertyChangeSupport можно динамически добавлять через любой AOP. Хоть Spring, хоть обычный Java Proxy InvocationHandler
...
Рейтинг: 0 / 0
17.11.2015, 16:19
    #39105744
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Спасибо за подсказку, только видимо чуть по другому
авторNote that text is not a bound property, so no PropertyChangeEvent is fired when it changes. To listen for changes to the text, use DocumentListener.
...
Рейтинг: 0 / 0
17.11.2015, 16:54
    #39105777
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixСпасибо за подсказку, только видимо чуть по другому
авторNote that text is not a bound property, so no PropertyChangeEvent is fired when it changes. To listen for changes to the text, use DocumentListener.

Ну, это если в обратную сторону биндинг нужен, то да. Только через DocumentListener. Поэтому проще взять готовый binding в виде либы.
...
Рейтинг: 0 / 0
17.11.2015, 17:49
    #39105835
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
BlazkowiczsaxixСпасибо за подсказку, только видимо чуть по другому
пропущено...


Ну, это если в обратную сторону биндинг нужен, то да. Только через DocumentListener. Поэтому проще взять готовый binding в виде либы.
То есть в обратную?
Мне надо чтобы при изменении значения в свойстве Text контрола значение сразу "транслировалось" в Parameter
...
Рейтинг: 0 / 0
17.11.2015, 17:51
    #39105837
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixBlazkowiczпропущено...


Ну, это если в обратную сторону биндинг нужен, то да. Только через DocumentListener. Поэтому проще взять готовый binding в виде либы.
То есть в обратную?
Мне надо чтобы при изменении значения в свойстве Text контрола значение сразу "транслировалось" в Parameter
Эх, а если на форме два компонента, которые привязаны к параметрам с одинаковыми именами - то при изменении text в одном компоненте и в другом менялось. В две стороны. (
...
Рейтинг: 0 / 0
17.11.2015, 18:09
    #39105856
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixТо есть в обратную?

Ну, я привел реализацию для биндинга из бина в UI. Но не наоборот.

saxixМне надо чтобы при изменении значения в свойстве Text контрола значение сразу "транслировалось" в Parameter
Сорри. Часто не внимательно читаю. Чтобы не писать DocumentListener можно повесить что-нибудь на потерю фокуса.

Код: java
1.
2.
3.
4.
5.
edtParamValue.addFocusListener(new FocusAdapter(){
    public void focusLost(FocusEvent e) {
        edtParamValue.setValue(edtParamValue.getText());
    }
});
...
Рейтинг: 0 / 0
17.11.2015, 18:13
    #39105859
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
BlazkowiczsaxixТо есть в обратную?

Ну, я привел реализацию для биндинга из бина в UI. Но не наоборот.

saxixМне надо чтобы при изменении значения в свойстве Text контрола значение сразу "транслировалось" в Parameter
Сорри. Часто не внимательно читаю. Чтобы не писать DocumentListener можно повесить что-нибудь на потерю фокуса.

Код: java
1.
2.
3.
4.
5.
edtParamValue.addFocusListener(new FocusAdapter(){
    public void focusLost(FocusEvent e) {
        edtParamValue.setValue(edtParamValue.getText());
    }
});


Да у меня проблема даже не в том чтобы связать UI c бином, а в том что бин в списке. Я пока не понимаю принципа работы этих листенеров
...
Рейтинг: 0 / 0
17.11.2015, 18:14
    #39105860
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixBlazkowiczпропущено...

Ну, я привел реализацию для биндинга из бина в UI. Но не наоборот.

пропущено...

Сорри. Часто не внимательно читаю. Чтобы не писать DocumentListener можно повесить что-нибудь на потерю фокуса.

Код: java
1.
2.
3.
4.
5.
edtParamValue.addFocusListener(new FocusAdapter(){
    public void focusLost(FocusEvent e) {
        edtParamValue.setValue(edtParamValue.getText());
    }
});


Да у меня проблема даже не в том чтобы связать UI c бином, а в том что бин в списке. Я пока не понимаю принципа работы этих листенеров
В WPF при биндинге, например, можно настроить направление биндинга.
...
Рейтинг: 0 / 0
17.11.2015, 18:25
    #39105874
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixВ WPF при биндинге, например, можно настроить направление биндинга.
Мы так вернемся к началу темы
1) В Swing нет биндинга. Вообще.
2) Есть библиотеки для биндинга, найти ссылки на примеры?
3) Библиотеки для биндинга интегрированы в IDE, если пользоваться WYSIWYG.
...
Рейтинг: 0 / 0
17.11.2015, 18:27
    #39105879
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxix Да у меня проблема даже не в том чтобы связать UI c бином, а в том что бин в списке. Я пока не понимаю принципа работы этих листенеров
Список тут при чем вообще? Вы привели код с циклом, я привел методы, которые можно вставить в итерации и получить то чего вы желаете.
...
Рейтинг: 0 / 0
17.11.2015, 18:28
    #39105881
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
BlazkowiczsaxixВ WPF при биндинге, например, можно настроить направление биндинга.
Мы так вернемся к началу темы
1) В Swing нет биндинга. Вообще.
2) Есть библиотеки для биндинга, найти ссылки на примеры?
3) Библиотеки для биндинга интегрированы в IDE, если пользоваться WYSIWYG.
1. Это я понял
2. Ну если не затруднительно. Сам тоже поищу.
3. У меня только Идея.
...
Рейтинг: 0 / 0
17.11.2015, 18:39
    #39105893
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxix2. Ну если не затруднительно. Сам тоже поищу.
Я бы вот это попробовал
http://www.jgoodies.com/freeware/libraries/binding/

Для одного проекта пользовался этим
https://kenai.com/projects/betterbeansbinding/pages/Home
Примеры надо поискать, но там не сложно. Типа такого:
http://www.devx.com/Java/Article/39964

saxix3. У меня только Идея.
https://www.jetbrains.com/idea/help/binding-the-form-and-components-to-code.html
...
Рейтинг: 0 / 0
17.11.2015, 18:42
    #39105899
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixВ WPF при биндинге, например, можно настроить направление биндинга.
Вопрос со звездочкой. А в WinForms?
...
Рейтинг: 0 / 0
17.11.2015, 18:43
    #39105901
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Blazkowiczsaxix2. Ну если не затруднительно. Сам тоже поищу.
Я бы вот это попробовал
http://www.jgoodies.com/freeware/libraries/binding/

Для одного проекта пользовался этим
https://kenai.com/projects/betterbeansbinding/pages/Home
Примеры надо поискать, но там не сложно. Типа такого:
http://www.devx.com/Java/Article/39964

saxix3. У меня только Идея.
https://www.jetbrains.com/idea/help/binding-the-form-and-components-to-code.html
Спасибо, поизучаю.
...
Рейтинг: 0 / 0
17.11.2015, 18:44
    #39105907
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
BlazkowiczsaxixВ WPF при биндинге, например, можно настроить направление биндинга.
Вопрос со звездочкой. А в WinForms?
Не использовал, но и информации о наличии в нем биндинга не видел.
...
Рейтинг: 0 / 0
17.11.2015, 18:46
    #39105909
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixBlazkowiczпропущено...

Вопрос со звездочкой. А в WinForms?
Не использовал, но и информации о наличии в нем биндинга не видел.
Вру. Есть. INotifyPropertyChanged
...
Рейтинг: 0 / 0
17.11.2015, 18:50
    #39105916
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
saxixВру. Есть. INotifyPropertyChanged
Прямой аналог PropertyChangeListener.
...
Рейтинг: 0 / 0
18.11.2015, 17:27
    #39107014
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связывание свойств из списка со свойствами визуальных компонент
Значит реализовал я двунаправленный биндинг через DocumentListener и PropertyChangeListener. А потом понадобилось тоже самое сделать с JComboBox, а там ItemChangeListener....
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Связывание свойств из списка со свойствами визуальных компонент / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]