您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将setVisible()函数放置在函数的开头是否不同?

将setVisible()函数放置在函数的开头是否不同?

正如评论和其他答案中已经指出的那样:

这不会直接回答您的问题。您的问题的答案是: 。如果您setVisible添加所有组件之前进行调用,则在某些情况下,它可能 适用于某些程序,某些PC,某些Java版本和某些操作系统,但是您 必须期望它可能无法按预期方式工作某些情况下。

您可以在stackoverflow和其他地方找到许多相关问题。这些问题的通常症状是某些组件无法正确显示,然后在调整窗口大小时突然出现。(调整窗口大小基本上会触发布局和重新绘制)。

当您违反Swing的线程规则时,意外行为的可能性会增加。而且,从某种意义上讲,您确实违反了Swing的线程规则:您应该始终在事件调度线程上创建GUI!

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class SomeSwingGUI
{
    public static void main(String[] args)
    {
        SwingUtilities.invokelater(new Runnable()
        {
            @Override
            public void run()
            {
                createAndShowGUI();
            }
        });
    }

    // This method may (and will) only be called
    // on the Event Dispatch Thread
    private static void createAndShowGUI()
    {
        JFrame f = new JFrame();

        // Add your components here

        f.setVisible(true); // Do this last
    }
}

顺便提一下:Timothy Truckle在评论中指出,您不应setVisible从构造函数调用它。这是真的。更重要的是:您通常 应该直接创建that的类extends JFrame。(在一些(罕见!)的情况下,这是合适的,但总的指导原则应该是 不能 延长JFrame

其他 2022/1/1 18:27:13 有528人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶