উইন্ডোজ ফোকাস চুরি থেকে উইন্ডোজ প্রতিরোধ করার সুবিধা আছে; পরিবর্তে এটি টাস্কবারের আইকনটি ফ্ল্যাশ করে। এক্সপিতে এটি ডিফল্টরূপে চালু রয়েছে (এটি পরিবর্তনের জন্য আমি দেখেছি এমন একমাত্র জায়গা এটি টুইকইউআই ব্যবহার করছে, তবে কোথাও একটি রেজিস্ট্রি সেটিংস রয়েছে)। ভিস্টায় তারা ডিফল্ট পরিবর্তন করতে পারে এবং / বা-বাক্সের বাইরে ইউআইয়ের সাহায্যে এটি ব্যবহারকারী অ্যাক্সেসযোগ্য সেটিং হিসাবে প্রকাশ করতে পারে।
উইন্ডোজ 2K এর আগে থেকে নিজেকে জোর করা এবং ফোকাস নেওয়া থেকে বিরত রাখা একটি বৈশিষ্ট্য যা (এবং আমি এর জন্য কৃতজ্ঞ)।
এটি বলেছিল, আমার কাজ করার সময় আমার ক্রিয়াকলাপ রেকর্ড করার জন্য আমাকে স্মরণ করিয়ে দেওয়ার জন্য আমি একটি সামান্য জাভা অ্যাপ্লিকেশন ব্যবহার করি এবং এটি প্রতি 30 মিনিটে নিজেকে সক্রিয় উইন্ডোতে পরিণত করে (অবশ্যই কনফিগারযোগ্য)। এটি সর্বদা উইন্ডোজ এক্সপির অধীনে ধারাবাহিকভাবে কাজ করে এবং শিরোনাম বার উইন্ডোটি কখনই ঝলক দেয় না। এটি টাইমার ইভেন্টের গুলি ছোঁড়ার ফলাফল হিসাবে ইউআই থ্রেডে নিম্নলিখিত কোডটি ব্যবহার করে:
if(getState()!=Frame.NORMAL) { setState(Frame.NORMAL); }
toFront();
repaint();
(প্রথম লাইনটি যদি ছোট করা হয় তবে পুনরুদ্ধার করা হয় ... আসলে এটি সর্বাধিক বৃদ্ধি পেলে এটি পুনরুদ্ধার করবে, তবে আমার এটি কখনও হয়নি)।
যদিও আমি সাধারণত এই অ্যাপ্লিকেশনটি ছোট করে ফেলেছি, প্রায়শই এটি আমার পাঠ্য সম্পাদকের পিছনে থাকে। এবং, যেমনটি আমি বলেছিলাম, এটি সর্বদা কার্যকর হয়।
আপনার সমস্যাটি কী হতে পারে সে সম্পর্কে আমার ধারণা আছে - সম্ভবত আপনার সেটভিসিবল () কলটির সাথে রেসের শর্ত রয়েছে। টুফ্রন্ট () উইন্ডোটি যখন ডাকা হয় তখন প্রকৃতপক্ষে প্রদর্শিত না হলে তা বৈধ হতে পারে না; অনুরোধফোকাস () এর আগেও আমার এই সমস্যাটি ছিল। উইন্ডো অ্যাক্টিভেটেড ইভেন্টে আপনাকে ইউআই শ্রোতার কাছে টফফ্রন্ট () কল লাগাতে হবে।
2014-09-07: একসময় উপরের কোডটি জাভা 6 বা 7 এ কাজ করা বন্ধ করে দিয়েছে কিছু তদন্ত এবং পরীক্ষার পরে আমাকে উইন্ডোটির toFront
পদ্ধতিটি ওভাররাইড করার জন্য কোডটি আপডেট করতে হয়েছিল (এটি থেকে সংশোধিত কোডের সাথে সংযুক্তিতে) উপরে):
setVisible(true);
toFront();
requestFocus();
repaint();
...
public @Override void toFront() {
int sta = super.getExtendedState() & ~JFrame.ICONIFIED & JFrame.NORMAL;
super.setExtendedState(sta);
super.setAlwaysOnTop(true);
super.toFront();
super.requestFocus();
super.setAlwaysOnTop(false);
}
জাভা 8_20 হিসাবে, এই কোডটি ঠিকঠাকভাবে কাজ করছে বলে মনে হচ্ছে।