簡體   English   中英

調整大小后,JFrame在Windows 8.1上凍結

[英]JFrame freezes on Windows 8.1 when resized

也發布在coderanch.com上

import javax.swing.*;

public class Tmp {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setSize(200, 200);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new JTextField());
                frame.setVisible(true);
            }
        });
    }
}

有關調整此JFrame大小的問題。

這是程序啟動后默認的外觀:

在此輸入圖像描述

當我嘗試像在圖片上顯示的那樣調整大小並將鼠標指針移動到屏幕頂部時(如下圖所示)我看到了:

在此輸入圖像描述

當我釋放鼠標時,框架被調整大小但沒有響應。 它上面有一個黑色的空間。 這是它的樣子:

在此輸入圖像描述

這種情況發生在Windows 8.1和java 1.7.0_45上(它也發生在Windows 7上)。
使用其他方法在Windows中調整框架大小時不會發生此問題。
僅當“在拖動時顯示窗口內容”在系統設置中處於活動狀態時才會發生。
為什么會這樣?
怎么解決這個問題?

這聽起來很像這里報道的bug。 假設在JDK8和9中修復,根據問題跟蹤器,錯誤修復被反向移植到版本7u80。

我有jdk1.7.0_25的Windows 7,你的代碼對我來說很好
我有3個解決方案:
1-i我認為Oracle更新45是錯誤的你可以用25替換45
2-java中的任何圖形用戶界面都使用OS,也許windows 8與java 7不兼容
3 - 您可以為幀大小調整添加一個偵聽器並調用repaint(); 在聽眾的身體或設置大小到實際大小
您也可以嘗試使用setUndecorated(true)和自定義鼠標偵聽器來實現幀大小調整

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM