+1 امتیاز
قبل در برنامه نویسی توسط (102 امتیاز)
ویرایش شده قبل توسط

با سلام.

برای قرار دادن یک فرم Swing بر روی تمام پنجره های دسکتاپ خاصیت

setAlwaysOnTop()

را true میکنیم. همچنین اگر فرم Swing غیرفعال میشود میتوان در رویداد فرم آن را

toFront()

کرد. برنامه من با انجام تمام این کارها بعضی از برنامه ها را وقتی اجرا میکنم فرم برنامه من را می پوشانند. چگونه میشود از این امر جلوگیری کرد و فرم Swing همواره روی تمام پنجره های جاری دسکتاپ قرار گیرد.

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

طبق مستندات متد setAlwaysOnTop زمانی که یک پنجره always-on-top می شود فقط پنجره هایی که always-on-top هستند می توانند برروی آن قرار گیرند (البته باز هم به سیستم عامل بستگی دارد). احتمالا آن برنامه هایی که برروی پنجره always-on-top شما قرار می گیرند خود always-on-top هستند.

قبل توسط (102 امتیاز)
بله، شما صحیح می فرمایید. اما منظور بنده این است که برنامه ای که فرم خود را به زور بر روی فرم Swing من قرار میدهد قبل از برنامه من اجرا می شود. با فرض ست بودن تنها این متد برای آن، فرم Swing من چون دوم اجرا میشود پس باید بالا بماند.
قبل توسط (1.1هزار امتیاز)
ربطی به رودتر یا دیرتر اجرا شدن برنامه ها ندارد.
قبل توسط (102 امتیاز)
شاید من خوب مشکلم را انتقال نمی دهم. درست است، تنها پنجره هایی که این خاصیت را داشته باشند میتوانند بر روی فرم Swing من قرار گیرند. اما مشکل این است که اگر فرم Swing من بالا باشد برنامه مورد نظر فورا فرم Swing من را میپوشاند.(نه روی برنامه مورد نظر کلیکی شده و نه رفرشی صورت گرفته!) با فرض اینکه اگر آن برنامه خاصیت دومی را هم که ذکر کردم(toFront منظورم است) در رویداد غیرفعال شدن پنجره خود قرار داده باشد من هم همین کار را کردم. اما فایده ای ندارد.
قبل توسط (1.1هزار امتیاز)
فکر کنم  مستندات متد setAlwaysOnTop را بخونید کاملا مسئله براتون شفاف میشه.

سوالات مشابه

+1 امتیاز
1 پاسخ 323 بازدید
0 امتیاز
1 پاسخ 239 بازدید
0 امتیاز
2 پاسخ 567 بازدید
+1 امتیاز
1 پاسخ 865 بازدید
0 امتیاز
2 پاسخ 1.7هزار بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط javaa (127 امتیاز)
+1 امتیاز
1 پاسخ 1.4هزار بازدید
0 امتیاز
0 پاسخ 1.0هزار بازدید
...