ورود

View Full Version : یک مثال ساده از threading در javafx میخوام



m44miri
جمعه 30 مهر 1389, 09:23 صبح
کسی هست که یک مثال ساده از thread در javafx سراغ داشته باشه که درکش راحت باشه
یچیزی که سورسش موجود باشه تا بتونم با مطالعش بفهممش
چنتا لینک پیدا کردم اما خداوکیلی هیچ کدومش قابل اجرا نبود
مثال خوبی پیدا کردم که اینه
http://learnjavafx.typepad.com/weblog/2009/06/background-tasks-in-javafx.html
اما هرکاری کردم اجرا نشد
نمیدونم مشکلش کجاست که اجرا نمیشه
بهر حال یه مثال ساده توی همین اندازه میخوام که درکش راحت باشه
ممنون

m44miri
یک شنبه 09 آبان 1389, 09:19 صبح
کسی که جوابی نداد.مشکلم توی اجراش حل شد اما یک مشکل بزرگتر دارم الان
اگر قصذ ذاشته باشیم کاری را انجام بدیم که پردازشی تولانی حدود ۵ ثانیه نیاز داشته باشه و قصد داشته باشیم در پس زمینه کاری انجام بدیم.باید چیکار کرد؟
مشکل من اینجاست که وقتی thead که پردازش ۵ ثانیه ای نیاز داره شروع میشه پردازش پس زمینه را از کار میندازه تا این پردازش ۵ ثانیه ای بپایان برسه. منظورم چیزی مثل کپی یک فایل توسط جاواست ..مثلا وقتی میخوایم یک فایل gif که انیمیشنه و نشون دهنده انجام این کپیه باید حالت انیمیشن داشته باشه از کار مبافته تا این کپی انجام بشه و بعد از کپی شدن فایل دباره آیکون انیمشن بکار میافته که این فایده ای نداره برام
در همه مثالهایی که در اینترنت سرچ کردم چیزی که مشکلم را حل کنم ندیدم.نمی دونم منظورم را درست رسوندم یا نه

kingnothing777
یک شنبه 09 آبان 1389, 15:22 عصر
منظورت اینه که می خوای روند انجام کارهای نرم افزار رو به صورت گرافیک نشون بدی؟

m44miri
یک شنبه 09 آبان 1389, 17:56 عصر
نه دقیقا
آیکونهای gif انیمیشن را دیدید حتما
می خوام در پس زمینه یک کاری مثلا ایجاد یک فایل روی هارددیسک را انجام بدم که حدود 5 ثانیه طول میکشه
و می خوام در صفحه javaFX مثلا یکی از این آیکنها هم وجود داشته باشه
http://www.anikaos.com/brown_usagi.html
اما مشکلم اینه که تا کار ایجاد فایل تمام نشه این آیکون متحرک نمیشه..یعنی انگار آیکون متحرک GIF حرکتی نمی کنه و ثابت میمونه و بعد از تمام شدن کار ایجاد فایل متحرک میشه..من میخوام که در زمان ایجاد فایل توسط برنامه ای که نوشتم این آیکون هم متحرک بمونه تا استفاده کننده نرم افزار بفهمه که نرم افزار داره کار میکنه:اشتباه:

kingnothing777
یک شنبه 09 آبان 1389, 18:36 عصر
توی ترد اون عکسی که می خوای بکشیو مرتب Repaint می کنی؟

m44miri
یک شنبه 09 آبان 1389, 20:15 عصر
نه.نمی دونم چجوریه
کاش یه مثالی یا لینکی میذاشتی اینجا

m44miri
دوشنبه 10 آبان 1389, 10:11 صبح
جدی اینجا کسی نیست که بتونه به من کمک کنه؟
پروژه من گیر این مساله کزاییه:افسرده:

kingnothing777
دوشنبه 10 آبان 1389, 15:49 عصر
حالا خیلی عصبانی نشو.
ببین باید یک کلاس توی کلاسی که می خوای عکسو توش بکشی ایجاد کنی که کلاس Thread رو extend کنه. بعد شیئی که می خوای در حین اجرا نشون داده بشه رو توی اون Repaint کنی.
بعد اگر مشکلت حل نشد باید یک ChangListener بسازی که مرتب Listener برنامرو عوض کنه.
اگر متوجه شدی که هیچ اگر نه این Email منه یک ساعتی On شو که منم باشم برات توضیح بدم.
sajad.tabatabaie@gmail.com
عزت زیاد.

m44miri
دوشنبه 10 آبان 1389, 15:56 عصر
کاش یک کد سورس مثال برام میزاشتی
اینظوری راحت تر مطلبو متوجه میشم

m44miri
دوشنبه 10 آبان 1389, 16:08 عصر
ایمیل من
m44miri@gmail.com
اما لطفا برام یه مثال بزارید یا یک لینک از مثال
بازهم ممنون

m44miri
جمعه 21 آبان 1389, 07:38 صبح
من باز هم کلی جستجو کردم اما هنوز مشکلم برطرف نشده
فکر میکنم خیلی ها توی این مبحث مشکل دارند ولی بهش بی توجهن...منابع برای این مطلب هم حیلی محدوده...کسی نیست که یه کمکی بکنه؟

sr_Hosseini
سه شنبه 16 آذر 1389, 02:16 صبح
منم به همون چیزی که ایشون گفتن نیاز دارم . زمانی که سی شارپ کار میکردم اونجا backgroundworker دقیقاْ اینکارو انجام میداد که با thread ها کار میکرد. جاوا معادلش رو باید داشته باشه ! یه کاریو بدیم بهش و در پس زمینه اونو انجام بده و رابط کاربر هم به کارش ادامه بده !

kingnothing777
سه شنبه 16 آذر 1389, 15:40 عصر
با سلام این مشکل با همون روشی که قبلا گفتم حل می شه منم توی پروژه خودم ازش استفاده کردم ولی چون پروژم کدش خیلی زیاده و برای اینکه کار این قسمتو ببینید باید تمامشو بذارم با عرض شرمندگی نمیشه.
ولی مراحل این کار به صورتی که اینجا می آرم.
1- اول شیئی که می خواین در کنار برنامه کار کنه رو معلوم می کنید.
2- بعد یک کلاس به صورت زیر می سازید


class chList implements javax.swing.event.ChangeListener {

public void stateChanged(javax.swing.event.ChangeEvent e) {
PB1.paintImmediately(PB1.getVisibleRect());
}
}

PB1 نام شیئی که می خوام همزمان کار کنه

3- بعد یک کلاس از نوع Thread به صورت زیر می سازید


private class Loading extends Thread implements Runnable {

@Override
public final void run() {
PB1.repaint();
}
}

4- در هنگام آغاز اجرای برنامه Threadرو به صورت زیر راه اندازی می کنید


public void createTheard() {
load = new Loading();
load.setPriority(4);
load.start();
}

در اینجا load یک شیئ از کلاس Loading است.

این منطق استفاده دو Thread به صورت همزمان است. حالا فرقی نمی کنه که این کار همزمان loading باشه یا نمایش عکس یا نمایش توضیحات یا درصد اجرای کار یا...
اگر سوالی بود در خدمتم.