我有和未修飾的JFrame,不可調整大小和放置屏幕的底部/中心。 JFrame的高度爲100像素,寬度爲1000像素。 如果任務欄改變其位置,我想根據任務欄的新位置和大小來放置JFrame。如何在任務欄位置或大小更改時移動JFrame?
我已經知道如何將JFrame放置在任務欄上方,只需要知道是否有任何方法來「偵聽」此更改並自動設置JFrame的新位置。我正在使用Eclipse和JDK 1.8
編輯:我不是關於監聽屏幕更改問。關於任務欄更改。我可以處理屏幕更改。
我有和未修飾的JFrame,不可調整大小和放置屏幕的底部/中心。 JFrame的高度爲100像素,寬度爲1000像素。 如果任務欄改變其位置,我想根據任務欄的新位置和大小來放置JFrame。如何在任務欄位置或大小更改時移動JFrame?
我已經知道如何將JFrame放置在任務欄上方,只需要知道是否有任何方法來「偵聽」此更改並自動設置JFrame的新位置。我正在使用Eclipse和JDK 1.8
編輯:我不是關於監聽屏幕更改問。關於任務欄更改。我可以處理屏幕更改。
Detect screen resolution change made by user (Java Listener?)似乎的答案表明沒有內置的支持檢測到本地窗口系統的這種類型的變化。
建議的答案之一是使用諸如JNA或JNI之類的東西來掛鉤本機事件。不幸的是,他們沒有提供任何有關底層窗口事件的信息。
另一種選擇是運行一個後臺線程,該線程定期檢查插入是否已經改變,然後相應地調整JFrame
的位置。您需要充分利用投票率,但我懷疑您可以每秒鐘執行幾次,而不會損害系統性能。
感謝您的回答。我也在考慮使用後臺線程來檢查插入,但正如你所說的,在不損害系統性能的情況下很難做到這一點。也認爲要製作4個海關jframes並在運行期間創建或顯示它們,但我不知道如何去做,以便它看起來是自動的。 – alfatymajo
我以前在Swing應用程序中使用過輪詢,發現只要輪詢頻率合理,就不會對性能造成任何傷害。我建議你嘗試每500ms作爲起點的投票,並將你的方式降低到200毫秒(200毫秒以下可能無法提供太多好處) –
最好的方法是什麼?我是新的線程。我想到一個TimerTask,但我懷疑它是否是一個好的解決方案 – alfatymajo
不重複,因爲我不需要屏幕分辨率。我在詢問任務欄 – alfatymajo