我把一个JPanel放入JScrollPane中,再把这个JScrollPane放入Container,结果出来一个什么都没有的窗体,但是JPanel直接放入Container就可以显示
另外setSize();这个方法怎么不起作用呢
public class StuKaoQ{
public static void main(String[] args){
InfoWindow infoWindow=new InfoWindow("KaoQin",100,100);
}
}class InfoWindow extends JFrame implements ActionListener{
JPanel panel;
JMenuBar menubar;
JMenu menu;
JMenuItem item1,item2,item3;
Container container;
JLabel label1,label2,label3,label4,label5;
JTextField[] idText,nameText,sexText,classText,timeText;
JScrollPane spanel;
Container ct;
JButton button=new JButton("dfs");

public InfoWindow(String s,int x,int y){
super(s);
setSize(100,70);//好像没起作用阿
setVisible(true);
item1=new JMenuItem("login");
item2=new JMenuItem("logout");
item3=new JMenuItem("exit");
menu=new JMenu("Menu");
menu.add(item1);
menu.add(item2);
menu.add(item3);
menubar=new JMenuBar();
menubar.add(menu);
setJMenuBar(menubar);
label1=new JLabel("ID");
label2=new JLabel("Name");
label3=new JLabel("Sex");
label4=new JLabel("Class");
label5=new JLabel("Time");
panel=new JPanel();
panel.setLayout(new GridLayout(51,5));
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(label4);
panel.add(label5);
idText=new JTextField[50];
nameText=new JTextField[50];
sexText=new JTextField[50];
classText=new JTextField[50];
timeText=new JTextField[50];

for(int i=0;i<50;i++){
idText[i]=new JTextField("");
nameText[i]=new JTextField("");
sexText[i]=new JTextField("");
classText[i]=new JTextField("");
timeText[i]=new JTextField("");
panel.add(idText[i]);
panel.add(nameText[i]);
panel.add(sexText[i]);
panel.add(classText[i]);
panel.add(timeText[i]);
}
spanel=new JScrollPane();
spanel.add(panel);
ct=getContentPane();
ct.add(spanel);//ct.add(panel);就可以运行正确
pack();
}

public void actionPerformed(ActionEvent e)
{
}

}

解决方案 »

  1.   

    //ct.add(spanel);// ct.add(panel);就可以运行正确
            ct.add(new JScrollPane(panel));
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class StuKaoQ {
        public static void main(String[] args) {
            InfoWindow infoWindow = new InfoWindow("KaoQin", 100, 100);
        }
    }class InfoWindow extends JFrame implements ActionListener {
        JPanel panel;    JMenuBar menubar;    JMenu menu;    JMenuItem item1, item2, item3;    Container container;    JLabel label1, label2, label3, label4, label5;    JTextField[] idText, nameText, sexText, classText, timeText;    JScrollPane spanel;    Container ct;    JButton button = new JButton("dfs");    public InfoWindow(String s, int x, int y) {
            super(s);
            item1 = new JMenuItem("login");
            item2 = new JMenuItem("logout");
            item3 = new JMenuItem("exit");
            menu = new JMenu("Menu");
            menu.add(item1);
            menu.add(item2);
            menu.add(item3);
            menubar = new JMenuBar();
            menubar.add(menu);
            setJMenuBar(menubar);
            label1 = new JLabel("ID");
            label2 = new JLabel("Name");
            label3 = new JLabel("Sex");
            label4 = new JLabel("Class");
            label5 = new JLabel("Time");
            panel = new JPanel();
            panel.setLayout(new GridLayout(51, 5));
            panel.add(label1);
            panel.add(label2);
            panel.add(label3);
            panel.add(label4);
            panel.add(label5);
            idText = new JTextField[50];
            nameText = new JTextField[50];
            sexText = new JTextField[50];
            classText = new JTextField[50];
            timeText = new JTextField[50];        for (int i = 0; i < 50; i++) {
                idText[i] = new JTextField("");
                nameText[i] = new JTextField("");
                sexText[i] = new JTextField("");
                classText[i] = new JTextField("");
                timeText[i] = new JTextField("");
                panel.add(idText[i]);
                panel.add(nameText[i]);
                panel.add(sexText[i]);
                panel.add(classText[i]);
                panel.add(timeText[i]);
            }
            spanel = new JScrollPane();
            spanel.add(panel);
            ct = getContentPane();
            // ct.add(spanel);// ct.add(panel);就可以运行正确
            ct.add(new JScrollPane(panel));
            // pack();        setSize(400, 300);// 好像没起作用阿
            // 涉及到界面更新的问题,先把布局弄好,再setsize、setvisible就好了
            setVisible(true);
        }    public void actionPerformed(ActionEvent e) {
        }}
      

  3.   

    import java.awt.*;
    import java.awt.event.*;import javax.swing.*;public class StuKaoQ{
    public static void main(String[] args){
    InfoWindow infoWindow=new InfoWindow("KaoQin",100,100);
    }
    }class InfoWindow extends JFrame implements ActionListener{
    JPanel panel;
    JMenuBar menubar;
    JMenu menu;
    JMenuItem item1,item2,item3;
    Container container;
    JLabel label1,label2,label3,label4,label5;
    JTextField[] idText,nameText,sexText,classText,timeText;
    JScrollPane spanel;
    Container ct;
    JButton button=new JButton("dfs");

    public InfoWindow(String s,int x,int y){
    super(s);
    setVisible(false);
    item1=new JMenuItem("login");
    item2=new JMenuItem("logout");
    item3=new JMenuItem("exit");
    menu=new JMenu("Menu");
    menu.add(item1);
    menu.add(item2);
    menu.add(item3);
    menubar=new JMenuBar();
    menubar.add(menu);
    setJMenuBar(menubar);
    label1=new JLabel("ID");
    label2=new JLabel("Name");
    label3=new JLabel("Sex");
    label4=new JLabel("Class");
    label5=new JLabel("Time");
    panel=new JPanel();
    ct=getContentPane();
    panel.setLayout(new GridLayout(51,5));
    panel.add(label1);
    panel.add(label2);
    panel.add(label3);
    panel.add(label4);
    panel.add(label5);
    idText=new JTextField[50];
    nameText=new JTextField[50];
    sexText=new JTextField[50];
    classText=new JTextField[50];
    timeText=new JTextField[50];

    for(int i=0;i<50;i++){
    idText[i]=new JTextField("");
    nameText[i]=new JTextField("");
    sexText[i]=new JTextField("");
    classText[i]=new JTextField("");
    timeText[i]=new JTextField("");
    panel.add(idText[i]);
    panel.add(nameText[i]);
    panel.add(sexText[i]);
    panel.add(classText[i]);
    panel.add(timeText[i]);
    }
    // pack();不能展开
    ct.add(new JScrollPane(panel,20,30));
    setSize(100,200);
    setVisible(true);
    }
    /* (non-Javadoc)
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     * created on 2005-11-12 by ly
     */
    public void actionPerformed(ActionEvent pE)
    {
    }

    }
      

  4.   

    调用JScroller的VERTICAL.FOREVER,HORIZONTAL.FOREVER