日期:2014-05-20  浏览次数:20813 次

JScrollPane为什么无法显示到jframe或者jpanel上
不知道为什么,JScrollPane就是不显示到jframe上,必须变动一下窗口大小,让系统因Resizable而自动调用repaint方法重绘时,才会显示出来。下面是主要代码。
Java code
    
//这是我的构造方法
        setLayout(new BorderLayout());
        setSize(300, 200);
    setLocationRelativeTo(null);
    setVisible(true);
    conn = MySQL.getInstance().getConnection();//连接数据库,我在MySQL类中写好了
    JTable jt=createJTable();//调用一个创建JTable的方法,和问题无关,没贴
    JButton jbBack=new JButton("back");
    jbBack.setSize(100,20);
    add(jbBack,BorderLayout.SOUTH);
    JScrollPane scrollPane = new JScrollPane(jt);
    add(scrollPane,BorderLayout.CENTER);
//以下两句我写和不写一个样,都不会显示出来
    scrollPane.setVisible(true);
    repaint();



------解决方案--------------------
你把JFrame 的setVisible(true)方法放到最后!;

------解决方案--------------------
呵呵,这个问题属于初始化问题,上次我们也是遇到类似的问题了。
首先把窗体里想有的构件都添加好,之后在显示出来就好了。。。
我的习惯是这样写的:
conn = MySQL.getInstance().getConnection();//连接数据库,我在MySQL类中写好了
JTable jt=createJTable();//调用一个创建JTable的方法,和问题无关,没贴
JButton jbBack=new JButton("back");
jbBack.setSize(100,20);
add(jbBack,BorderLayout.SOUTH);
JScrollPane scrollPane = new JScrollPane(jt);
add(scrollPane,BorderLayout.CENTER);

 setLayout(new BorderLayout());
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);