Форум программистов, компьютерный форум, киберфорум
JavaFX
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
1

JavaFx. Просуммировать значение числовое значение объектов из 3х массивов и забиндить значение на Label

04.07.2017, 04:25. Показов 762. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Подскажите пожалуйста, как можно решить такую вот проблемку: на форме есть 3 таблицы, в каждой таблице есть числовое поле, есть Label, который должен отображать сумму всех трёх таблиц по этим колонкам. Итак, имеется 3 массива с разными классами(в каждом массиве один класс), но у каждого есть свойство IntegerProperty, мне нужно получить сумму, по всем трём массивам, суммируя указаное свойство IntegerProperty, но сумма должна быть, ObservableValue, т.е., если у какого-то из этих объектов измениться числовое значение, сумма должна обновиться.

Поделитесь пожалуйста опытом, как такое можно реализовать?

Добавлено через 51 минуту
Так, ну у меня вроде-бы получилось, выложу, может кому-то пригодится. Если есть варианты пооптимальней, был-бы рад их посмотреть

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
ObservableList<SomeClassOne> arr1;
ObservableList<SomeClassTwo> arr2;
ObservableList<SomeClassThree> arr3;
//Массивы с тремя разными классами, но у всех есть свойство count (IntegerProperty)
 
//Итак, для начала объединим всё в один Stream, чтобы было удобнее
Stream<IntegerProperty> streamTotalCount = Stream.concat(
   arr1.stream().map(SomeClassOne::countProperty),
   Stream.concat(
      arr2.stream().map(SomeClassTwo::countProperty),
      arr3.stream().map(SomeClassThree::countProperty)
   )
);
 
//Далее нам нужно создать NumberBinding для суммы всех IntegerProperty
Optional<IntegerProperty> result = streamTotalCount
   .reduce(new BinaryOperator<IntegerProperty>() {
      @Override
      public IntegerProperty apply(IntegerProperty integerProperty, IntegerProperty integerProperty2) {
         IntegerProperty sum = new ReadOnlyIntegerWrapper();//создаём Observable
         sum.bind(integerProperty.add(integerProperty2));//и биндим её на сумму двух integerProperty
         return sum;
      }
   });
 
   //после чего, у нас получается observable суммы всех значених и биндим его на label
   result.ifPresent(integerProperty -> {
      lbCountTotal.textProperty().bind(integerProperty.asString());
   });
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2017, 04:25
Ответы с готовыми решениями:

Напишите программу, которая читает с клавиатуры числовое значение x и выводит на экран значение функции f(x)
Добрый день! имеется следующая задача: Напишите программу, которая читает с клавиатуры числовое...

Числовое значение из одного textbox-а разделить на значение из другого
вот код программы: private void button1_Click(object sender, EventArgs e) { ...

Считать числовое значение из jTextPane и вставить в значение "socket"
Здравствуйте. есть програмка клиент и сервер. Клиент пересылает серверу текст по фиксированному...

Если значение label не менялось в течении 2 секунд, то записать значение в базу
Если значение label не менялось в течении 2 секунд, то записать значение в базу, иначе сообщение:...

0
04.07.2017, 04:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2017, 04:25
Помогаю со студенческими работами здесь

Для массивов Х[10] и У[10] найти наименьшее значение (Хi+Уi) и значение i при этом
Для массивов Х и У найти наименьшее значение (Хi+Уi) и значение i при этом

Присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае
Имеется символьная переменная d, присвоить логической переменной T значение true, если значение...

Описать процедуру ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг: значение A переходит в C, значение C — в B, значение В-в А
Описать функцию ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг: значение A переходит в C,...

Конвертация в числовое значение.
Имеется поле textBox1 в котором записано некое число, которое равно 50. Как присвоить это значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru