جاوا اف ایکس property binding به شما اجازه می دهد تا مقدار دو ویژگی که هر زمان یکی از ویژگی ها تغییر می کند را همزمان کنید و در این صورت مقدار ویژگی دیگر به صورت خودکار آپدیت خمی شود. دو نوع از مقیدسازی یا binding در جاوا اف ایکس پشتیبانی می شود:
- الزام سازی غیر مستقیم یا Unidirectional binding : با مقیدسازی غیرمستقیم binding در یک جهت کار می کند. برای مثال اگر شما ویژگی A را به ویژگی B مقید کنید، مقدار ویژگی A وقتی ویژگی B تغییر کند، تغییر خواهد کرد اما نه طور دیگری.
- مقیدسازی دو طرفه یا Bidirectional binding : با مقیدسازی دو طرفه، دو مقادیر ویژگی با هم همزمان سازی می شود اگر هر کدام از ویژگی ها تغییر کند و ویژگی دیگر به صورت خودکار نیز تغییر خواهد کرد.
تنظیم دو نوع binding به طرز حیرت آوری ساده است. هر ویژگی یک “bind” دارد و متد bindBiDirectional
برای تنظیم یک binding به طور ساده این متد را فراخوانی می کنیم و مشخص می کنیم چه چیزی را می خواهیم bind یا به عنوان آرگومان قید کنیم.
در اینجا یک مثال که binding غیرمستقیم روی ویژگی متن یا text یک لیبل به ویژگی متن یک فیلد متن می سازد و محتواهای برچسب همیشه محتواهای فیلد text را نمایش می دهد:
lable1.textProperty().bind(text1.textProperty());
با این binding در این مکان، متن نمایش داده شده توسط label1 به صورت خودکار آپدیت می شود، کاراکتر به کاکتر وقتی که کاربر داده را وارد فیلد متن می کند.
مثال روبرو نمایش می دهد چگونه یک binding غیرمستقیم بین دو text field به نام های text1 و text2 ایجاد می کند:
text1.textProperty()
.bindBidirectional(text2.textProperty());
با این binding در این مکان، هر متنی که هرکدام از فیلد متنی ها وارد کنید به صورت خودکار در دیگری نیز تکرار خواهد شد.
برای نمایش اینکه چگونه مقیدسازی می تواند در یک برنامه کامل بکغار رود، این کد لیست شده یک برنامه با دو فیلد متن و یک جفت لیبل متصل به هرکدام را نمایش می دهد. اولین فیلد متن نام یک کاراکتر را در یک اجرا قبول می کند و دومین فیلد متن نام یک هنرپیشه را قبول می کند. برچسب بازیگری را نمایش می دهد که نقش را بازی می کند همانطور که در تصویر نشان داده شده است.
کد برنامه را از این قسمت می توانید مشاهده کنید:
مقداد علی بخشی هستم. موسیقی دان، برنامه نویس، متخصص هوش مصنوعی، علم داده، متخصص بلاکچین و توسعه دهنده ربات های هوشمند.
دانش آموخته مقطع ارشد و دکتری دانشکده فنی دانشگاه تهران هستم. با سابقه تدریس درس برنامه نویسی در دانشگاه (پردیس بین الملل کیش دانشگاه تهران)
بسیار عالی
ممنون