PDA

View Full Version : یه سوال خیلی‌ ساده



yegane8
پنج شنبه 11 خرداد 1391, 01:57 صبح
سلام

یه سوال خیلی‌ صدا دارم اگه تو برنامه بخوام با زدن یکی‌ از button ها توی فرم۱ برم به یک فرم دیگه فقط برای همین تیکش باید چه کدی بزنم؟

spiderman200700
پنج شنبه 11 خرداد 1391, 02:11 صبح
سلام
فرض کن دوتا فرم داری به اسم های Form1 و Form2 . میخوای از Form1 به Form2 بری.
روی Buttonی که توی Form1 هست ، دوبار کلیک کن. و در قسمت باز شده این کد رو بنویس:
new Form2().setVisible(true);

همونطور که میدونی باید به جای Form1 و Form2 اسم کلاس مربوط به فرم هاتو بنویسی.

yegane8
پنج شنبه 11 خرداد 1391, 23:11 عصر
سلام
فرض کن دوتا فرم داری به اسم های Form1 و Form2 . میخوای از Form1 به Form2 بری.
روی Buttonی که توی Form1 هست ، دوبار کلیک کن. و در قسمت باز شده این کد رو بنویس:
new Form2().setVisible(true);

همونطور که میدونی باید به جای Form1 و Form2 اسم کلاس مربوط به فرم هاتو بنویسی.

سلام

ببخشید من باید چیکار کنم که با بستن هرکدوم از فرم‌ها در زمان اجرای برنامه فرم دیگر بسته نشود کد بالا رو که امتحان کردم به این مشکل برخوردم

سوال ۲: اینکه من باید چیکار کنم تا با زدن button روی فرم۱ ، در زمان اجرا وقتی‌ به فرم۲ رفتیم فرم ۱ ناپیدا شود (وقتی new form1().setVisible(false);) این رو می زنم که نمیشه)

spiderman200700
جمعه 12 خرداد 1391, 00:53 صبح
اگه میخوای با بستن Form2ت Form1 بسته نشه، توی متد سازنده ی Form2 این خط رو بنویس:
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

در مورد سوال دومت هم باید قبل از خطی که توش Form2 رو نمیاش میدی اینو بنویسی :
setVisible(false);

yegane8
پنج شنبه 15 تیر 1391, 15:59 عصر
اگه میخوای با بستن Form2ت Form1 بسته نشه، توی متد سازنده ی Form2 این خط رو بنویس:
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

اگه form2 از نوع jframe نباشه و یک کلاس عادی باشه این کد جواب نمیده باید چی کار کنم؟(form1 یک jframe است)
باتشکر

spiderman200700
پنج شنبه 15 تیر 1391, 17:05 عصر
معمولا ما JFrameها رو نمایش میدیم. اگه form2 یه JFrame نیست ، پس چیه؟

yegane8
پنج شنبه 15 تیر 1391, 18:06 عصر
معمولا ما JFrameها رو نمایش میدیم. اگه form2 یه JFrame نیست ، پس چیه؟
یه کلاس که مثلا اطلاعات رو از database در جدول نمایش می دهد
یا مثلا همون کلاس ُSwingRadioButtonhttp://barnamenevis.org/showthread.php?348997-jradioButton

spiderman200700
پنج شنبه 15 تیر 1391, 19:53 عصر
به هر حال وقتی قراره یه چیزی به کاربر نمایش داده بشه باید یه Window هم در کار باشه. حالا این Window در پروژه ی شما به احتمال خیلی زیاد باید JFrame باشه .
اگه فکر میکنید اشتباه متوجه شدم یه توضیح کامل بفرمایید، تا راهنماییتون کنم.

yegane8
پنج شنبه 15 تیر 1391, 21:11 عصر
به هر حال وقتی قراره یه چیزی به کاربر نمایش داده بشه باید یه Window هم در کار باشه. حالا این Window در پروژه ی شما به احتمال خیلی زیاد باید JFrame باشه .
اگه فکر میکنید اشتباه متوجه شدم یه توضیح کامل بفرمایید، تا راهنماییتون کنم.

مشکل اینجاست که form۲ از نوع Jframe نیست پس از javax.swing.JFrame ارث نمی بره بنابراین متد
setDefaultCloseOperation(form1.DISPOSE_ON_CLOSE);
واسش تعریف نشده می شود
در ضمن form2 خودش از یه کلاس دیگه به ارث می برد
حالا باید چی کار کرد:متفکر:
باتشکر

spiderman200700
پنج شنبه 15 تیر 1391, 23:08 عصر
فقط به کلاسهایی که از JFrame ارث میبرن JFrame نمیگن. وقتی از JFrame یه متغیر تعریف کنی باز هم بهش JFrame میگن. پس form2 شما هم JFrame هست.
باید از متغییری که توی form۲ بهش کامپوننت ها رو add می کنید استفاده کنید. فرض کنید اسمش اون متغیر jFrame2 باشه. این کار رو بکنید:
jFrame2.setDefaultCloseOperation(JFrame.DISPOSE_ON _CLOSE);

yegane8
پنج شنبه 15 تیر 1391, 23:53 عصر
درست شد ممنون
اشکال نداره که من این رو مستقیما در constructor ننویسم و توی یه متدی که در constructor صداش کردم بنویسم ؟

spiderman200700
جمعه 16 تیر 1391, 00:35 صبح
خواهش میکنم.
نه مشکلی نداره. میتونید این کار رو بکنید :لبخندساده: