RUVIDEO
Поделитесь видео 🙏

Tutorial na tabulky (TableView)

📁 Обучение 👁️ 16 📅 05.12.2023

V tomto tutorialu ukazuji jak vytvořit vhodný datový model pro tabulku a jak realizovat jeh propojení s jejími buňkami. Celý příklad se důsledně drží MVC konceptu, tak aby grafické komponenty sledovaly model a metody pro manipulaci s daty manipulovali pouze s modelem a ne s GUI prvky. V příkladů využívám jen existující buňky pro tabulku v kombinaci s nástroji pro převod z a na řetězec. Aby příklad ukázal více vlastností, pracuje se v něm i s datem (a jeho výpisem, porovnáním a dalšími manipulacemi). Příklad navazuje na tutorial s kontrolovaným bindingem (https://youtu.be/ruk1liJ2QR0). Tutorial navazuje na přednášky předmětu KIV/UUR (https://courseware.zcu.cz/portal/studium/courseware/kiv/uur) na Západočeské univerzitě, nejsou k němu ale potřebné - může posloužit každému kdo si chce technologii vyzkoušet.

Užitečné zdroje:
Výchozí zdrojové texty: http://home.zcu.cz/~lipka/uur/tableInit.zip (stahujte přes pravé tlačítko - uložit jako; v tomto případě jsou poměrně rozsáhlé)
Finální zdrojové texty: http://home.zcu.cz/~lipka/uur/tableFinished.zip (stahujte přes pravé tlačítko - uložit jako; obsahují zobecněnou konverzi čísel)

0:00 - úvod
0:26 - výchozí aplikace
0:50 - datový model
7:10 - binding v datovém modelu (s ochranou před null položkami), třída Period - https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/Period.html
12:25 - přístup k datům, settery a gettery
15:48 - Property s vnitřní kontrolou (Double)
20:45 - gettery pro read only atributy - udržení zapouzdření
23:11 - Kontrola platnosti data (vzájemného vztahu více atributů) - settery s kontrolou
25:56 - Formátování data do výpisu (ošetření chyby při kontrole), https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html
32:22 - zbylé gettery a settery
34:05 - konstruktor datového modelu
36:38 - getter pro binding
38:56 - datový model pro tabulku (kolekce jako property)
41:49 - integrace tabulky do GUI - okolní prostředí
42:44 - deklarace tabulky a modelu
43:29 - tvorba instance TableView a spojení s modelem
45:37 - sloupce se jménem (zobrazení String s bindingem, přes PropertyValueFactory https://openjfx.io/javadoc/16/javafx.controls/javafx/scene/control/cell/PropertyValueFactory.html)
49:34 - editovatelný sloupec s řetězcem (přes TextFieldTableCell - https://openjfx.io/javadoc/16/javafx.controls/javafx/scene/control/cell/TextFieldTableCell.html )
51:13 - výpis výběru v tabulce na žádost, s komplexním toString()
53:43 - rozdíl mezi bindingem a využitím getteru, ukázka práce PropertyValueFactory
58:50 - editovatelný sloupec s číslem (zobrazení Double s konverzí - defaultní DoubleStringConvertor https://openjfx.io/javadoc/16/javafx.base/javafx/util/converter/DoubleStringConverter.html a jeho chování); bude vyhazovat výjimky
1:03:55 - editovatelný sloupec pro datum zařazení do služby (LocalDate https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/LocalDate.html - obecný objekt, s bindingem pro čtení)
1:06:05 - formátování data do textové buňky (defaultn LocalDateStringConvertor https://openjfx.cn/javadoc/16/javafx.base/javafx/util/converter/LocalDateStringConverter.html)
1:07:36 - vlastní implementace konvertoru data s vracením poslední platné hodnoty a ošetřením pro null
1:20:15 - propagace dat do modelu bez bindingu (volání setteru s kontrolou v modelu -)
1:23:58 - dialog s chybovou hláškou
1:26:00 - vyucení překreslení tabulky
1:27:02 - návrat na poslední platnou hodnotu v buňce s obnovením tabulky (kdy buňka pozná že se má překreslit a kdy ne)
1:30:51 - sloupec pro vyřazení ze služby (stejný jako předchozí)
1:33:22 - reakce tabulky na změny modelu "zvenku" (kdy buňka pozná že se překreslit při změně iniciované kontrolerem)
1:35:33 - sloupec s výběrem (ComboBoxem https://openjfx.cn/javadoc/16/javafx.controls/javafx/scene/control/cell/ComboBoxTableCell.html - defaultní implementace)
1:38:02 - řazení dat, defaultní pořadí prvků enumů
1:38:50 - hezký výpis enumů
1:41:27 - sloupec pro výpis bindingu (s automatickou aktualizací)
1:42:32 - vlastní továrna pro data v buňce (implementace pro observable objekty)
1:43:44 - konvertor pro obecný objekt ve sloupci (jen pro výpis, s kontrolou null)
1:47:44 - řazení s vlastním komparátorem (přibližné porovnání instancí Period, s řazením null hodnot)
1:53:21 - šířky sloupců v tabulce (defaultní chování, vyplnění prostoru, vlasní šířka přes binding)
1:56:30 - mazání výběru v tabulce
1:58:04 - dialog s žádostí o potvrzení
2:02:13 - vkládání do tabulky
2:03:45 - recyklace dialogů při kontrole vstupů
2:08:09 - závěreční shrnutí

Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «Tutorial na tabulky (TableView)», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.

Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.

Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!

Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.