powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Связывание свойств из списка со свойствами визуальных компонент
23 сообщений из 23, страница 1 из 1
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #39105687
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Parameter дописать по примеру тут:
https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #39105705
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PropertyChangeSupport можно динамически добавлять через любой AOP. Хоть Spring, хоть обычный Java Proxy InvocationHandler
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #39105835
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczsaxixСпасибо за подсказку, только видимо чуть по другому
пропущено...


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


Ну, это если в обратную сторону биндинг нужен, то да. Только через DocumentListener. Поэтому проще взять готовый binding в виде либы.
То есть в обратную?
Мне надо чтобы при изменении значения в свойстве Text контрола значение сразу "транслировалось" в Parameter
Эх, а если на форме два компонента, которые привязаны к параметрам с одинаковыми именами - то при изменении text в одном компоненте и в другом менялось. В две стороны. (
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #39105874
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixВ WPF при биндинге, например, можно настроить направление биндинга.
Мы так вернемся к началу темы
1) В Swing нет биндинга. Вообще.
2) Есть библиотеки для биндинга, найти ссылки на примеры?
3) Библиотеки для биндинга интегрированы в IDE, если пользоваться WYSIWYG.
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #39105879
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxix Да у меня проблема даже не в том чтобы связать UI c бином, а в том что бин в списке. Я пока не понимаю принципа работы этих листенеров
Список тут при чем вообще? Вы привели код с циклом, я привел методы, которые можно вставить в итерации и получить то чего вы желаете.
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #39105881
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczsaxixВ WPF при биндинге, например, можно настроить направление биндинга.
Мы так вернемся к началу темы
1) В Swing нет биндинга. Вообще.
2) Есть библиотеки для биндинга, найти ссылки на примеры?
3) Библиотеки для биндинга интегрированы в IDE, если пользоваться WYSIWYG.
1. Это я понял
2. Ну если не затруднительно. Сам тоже поищу.
3. У меня только Идея.
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #39105899
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixВ WPF при биндинге, например, можно настроить направление биндинга.
Вопрос со звездочкой. А в WinForms?
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #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
Связывание свойств из списка со свойствами визуальных компонент
    #39105907
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczsaxixВ WPF при биндинге, например, можно настроить направление биндинга.
Вопрос со звездочкой. А в WinForms?
Не использовал, но и информации о наличии в нем биндинга не видел.
...
Рейтинг: 0 / 0
Связывание свойств из списка со свойствами визуальных компонент
    #39105909
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixBlazkowiczпропущено...

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


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