首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >调整大小时,JFrame在Windows8.1上冻结

调整大小时,JFrame在Windows8.1上冻结
EN

Stack Overflow用户
提问于 2013-12-14 20:25:12
回答 2查看 870关注 0票数 10

也发布在coderanch.com上。

代码语言:javascript
代码运行次数:0
运行
复制
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大小的问题。

这是程序启动后的默认外观:

当我尝试像图片一样调整大小时,并将鼠标指针移动到屏幕顶部时(如下图所示),我会看到以下内容:

当我释放鼠标时,框架会调整大小,但没有响应。上面有一个黑色的空白处。它看起来是这样的:

这发生在Windows8.1和java 1.7.0_45上(也发生在Windows7上)。

在Windows中使用其他方法调整框架大小时不会出现此问题。

只有当系统设置中的“拖动时显示窗口内容”处于活动状态时,才会发生这种情况。

为什么会发生这种情况?

如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2014-09-20 00:56:40

这听起来很像here报告的bug。应该在JDK8和9中修复,根据问题跟踪器的说法,错误修复被反向移植到版本7u80。

票数 4
EN

Stack Overflow用户

发布于 2013-12-14 20:45:05

我用的是装有jdk1.7.0_25的Windows7,你的代码对我来说没问题

我有3个解决方案:

1-我认为甲骨文在45的更新中是错误的你可以用25替换45

2- java中的任何图形用户界面都使用来自OS的图形用户界面,可能windows 8还不兼容java 7

3-您可以添加一个监听器来调整帧的大小,并在监听器的主体中调用repaint();,或者将size设置为实际大小

此外,您还可以尝试使用setUndecorated(true)和自定义鼠标侦听器来实现帧大小调整

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20583254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档