java swing setVisible放置顺序不同导致显示效果不同

问题就是在不同地方使用setVisible最终效果不同,下面有代码和效果图

package mvc;

import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;

/**
 * Created by Smith on 2016/10/15.
 */
public class MvcTest {
    static final int WIDTH = 500;
    static final int HEIGHT = 600;

    public static void main(String[] args)
    {
        JFrame jf = new JFrame("Hello");
        jf.setSize(WIDTH,HEIGHT);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        JPanel jp = new JPanel();
        jf.setContentPane(jp);
        JButton btn1 = new JButton("WEST");
        BorderLayout lay = new BorderLayout();
        jf.setLayout(lay);
        jp.add(btn1,"West");
        //jf.setVisible(true);
    }
}

生成效果:
图片描述

接下来是正常结果的代码

package mvc;

import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;

/**
 * Created by Smith on 2016/10/15.
 */
public class MvcTest {
    static final int WIDTH = 500;
    static final int HEIGHT = 600;

    public static void main(String[] args)
    {
        JFrame jf = new JFrame("Hello");
        jf.setSize(WIDTH,HEIGHT);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //jf.setVisible(true);
        JPanel jp = new JPanel();
        jf.setContentPane(jp);
        JButton btn1 = new JButton("WEST");
        BorderLayout lay = new BorderLayout();
        jf.setLayout(lay);
        jp.add(btn1,"West");
        jf.setVisible(true);
    }
}

图片描述

阅读 4.5k
1 个回答

理解为刷新,增加某个模块后setVisible就是展示的最新效果

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题