ورود

View Full Version : اشکال در setBounds



cnmeysam
جمعه 19 آبان 1396, 22:53 عصر
سلام من یه jpanel به فرمم اضافه کردم و برای اکشن jbutton تعریف کردم وقتی روش کلیک شد ابعاد پنل من در مکان و سایز مورد نظر من ظاهر بشه




jpanel.setBounds(0, 1, 167, 285);



ولی بعد از اینکه سایز فرمم عوض میشه ابعاد و سایز jpanel به حالت اولیه بر میگرده چطوری میتونم از این کار جلو گیری کنم؟
در ضمن jpanel رو با کامند نساختم توی netbeans از قسمت دیزاین به فرم اضافه کردم

vahid-p
شنبه 20 آبان 1396, 13:09 عصر
Layout فرمتون اجزای داخل فرم رو از نظر اندازه و مکان قرارگیری تغییر میده به صورتی که شروطی که براش مشخص شده رو حفظ کنه. همیشه هم اینکار رو با آپدیت کردن اندازه و مکان کامپوننتهای زیر مجموعش انجام میده. یعنی نمیتونید یه کامپوننت اندازش رو تغییر بدید و ساختار فرم رو به هم بزنید.

هرچند setBounds که به هیچ وجه تضمین نمیدم ولی اگر یک JPanel دارید و همزمان setSize, setPreferedSize, setMinimumeSize رو یه اندازه قرار بدید ثابت میمونه (البته Minimume ضروری نیست تا جایی که من دیدم)
Layoutها سعی میکنن اندازه کامپوننت رو مطابق PreferedSize اشون در نظر بگیرن، بعد هم setSize به این دلیل هست که همون لحظه اندازه رو تغییر بده. وگرنه باید یه تغییری در اندازه ها ایجاد بشه تا LayoutManager بیاد و بر اساس PreferedSize تغییرات رو اعمال کنه. میتونید حالات مختلف رو تست کنید و خودتون ببینید.

mostafa3dmax
شنبه 20 آبان 1396, 14:45 عصر
سلام من یه jpanel به فرمم اضافه کردم و برای اکشن jbutton تعریف کردم وقتی روش کلیک شد ابعاد پنل من در مکان و سایز مورد نظر من ظاهر بشه




jpanel.setBounds(0, 1, 167, 285);



ولی بعد از اینکه سایز فرمم عوض میشه ابعاد و سایز jpanel به حالت اولیه بر میگرده چطوری میتونم از این کار جلو گیری کنم؟
در ضمن jpanel رو با کامند نساختم توی netbeans از قسمت دیزاین به فرم اضافه کردم

اول تمام اجزای فرمت رو بذار توی یه پنل بعد پنل رو از هر طرف به فرمت بچسبون بعد روی پنل راست کلیک کن از set layout مقدارش رو روی null layout تنظیم کن درست میشه .
یا اینکه میتونی فقط برای خود فریم این کار رو انجام بدی و دیگه نیاز به پنلی که گفتم نیست فقط تو این روش باید برای فریمت مینیمم سایز تعریف کنی چون اگه مینیمم ساز تعریف نکنی فریمت بدون اندازه نشون داده میشه .
به نظر من روش اول بهتر و کارا تره دردسر مینیمم سایز رو هم نداره