Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с событиями / 7 сообщений из 7, страница 1 из 1
25.11.2014, 10:36
    #38815841
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
Здравствуйте, у меня в программе есть переменная:
Код: java
1.
  public static String logger = "";


Можно ли в Java привязать событие к изменению этой переменной? То есть когда эта переменная изменялась, то срабатывал какой то метод.
Заранее большое спасибо!
...
Рейтинг: 0 / 0
25.11.2014, 10:41
    #38815845
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
Код: java
1.
2.
3.
4.
5.
6.
7.
private String logger = "";

public void setLogger(String s){
     String old = this.logger;
     this.logger = s;
     firePropertyChanged("logger", old, s);
}
...
Рейтинг: 0 / 0
25.11.2014, 10:53
    #38815856
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
7.
private String logger = "";

public void setLogger(String s){
     String old = this.logger;
     this.logger = s;
     firePropertyChanged("logger", old, s);
}



У меня NetBeans ругается на
Код: java
1.
 firePropertyChanged("logger", old, s);


Предлагает создать такой метод в классе
...
Рейтинг: 0 / 0
25.11.2014, 10:54
    #38815859
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
Аааа, там опечатка в слове
...
Рейтинг: 0 / 0
25.11.2014, 10:54
    #38815860
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
docs.oracle.com/javafx/2/api/javafx/beans/property/package-summary.html
docs.oracle.com/javafx/2/api/javafx/beans/property/StringProperty.html

docs.oracle.com/javase/8/javafx/api/javafx/beans/property/package-summary.html
docs.oracle.com/javase/8/javafx/api/javafx/beans/property/StringProperty.html
...
Рейтинг: 0 / 0
25.11.2014, 10:57
    #38815865
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
Не понимаю как работает ваш код... как вывести через System.out.println() что изменилась переменная?
...
Рейтинг: 0 / 0
25.11.2014, 12:06
    #38815920
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с событиями
VaneS Ri_laxкак вывести через System.out.println() что изменилась переменная?
Читай наздоровье)
SomeFxBean.java
Код: 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.
package testbean;

import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class SomeFxBean {

    //<editor-fold defaultstate="collapsed" desc="titleProperty">
    private final StringProperty title = new SimpleStringProperty();

    public String getTitle() {
        return title.get();
    }

    public void setTitle(String value) {
        title.set(value);
    }

    public StringProperty titleProperty() {
        return title;
    }
    //</editor-fold>

    public final IntegerProperty anotherProperty = new SimpleIntegerProperty();

}

TestBean.java
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
package testbean;

import java.util.function.Function;
import javafx.util.StringConverter;

import static java.lang.System.out;

public class TestBean {

    public static void main(String[] args) {
        SomeFxBean bean = new SomeFxBean();

        bean.titleProperty().bindBidirectional(bean.anotherProperty, stringConverter(
                text -> text.length(),
                number -> {
                    int size = number.intValue();
                    StringBuilder sb = new StringBuilder(size);
                    for (int i = 0; i < size; ++i) {
                        sb.append('*');
                    }
                    return sb.toString();
                }
        ));

        bean.titleProperty().addListener((all, was, become)
                -> out.println(
                        "titleProperty:" + "\n" +
                        "  old value: " + was + "\n" +
                        "  new value: " + become + "\n"
                )
        );

        bean.anotherProperty.addListener((all, was, become)
                -> out.println(
                        "----------" + "\n" +
                        "anotherProperty:" + "\n" +
                        "  old value: " + was + "\n" +
                        "  new value: " + become + "\n" +
                        "----------" + "\n"
                )
        );

        bean.setTitle("1");
        bean.setTitle("2");
        bean.setTitle("3");
        bean.setTitle("100");

        bean.anotherProperty.set(30);
        bean.titleProperty().set("Так тоже можно");

    }

    public static <T> StringConverter<T> stringConverter(
            Function<String, T> from,
            Function<T, String> to
    ) {
        return new StringConverter<T>() {
            @Override public String toString(T object) {
                return to.apply(object);
            }

            @Override public T fromString(String string) {
                return from.apply(string);
            }
        };
    }
}

...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с событиями / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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