import java.awt.Color;
import java.sql.*;
import java.util.Vector;
import javax.swing.border.*;
//import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class DesignFrame extends JFrame {
JTextField SnoText1,SnoText2,SnameText1,SnameText2,SsexText,SageText,SsdeptText;
JButton searchButton1,searchButton2,addButton,deleteButton,updateButton;
//String Sno1,Sno2,Sname1,Sname2,Ssex,Sage;
JPanel panel2 = null;
JScrollPane panel3 = null; 
JPanel panel1 = null;
JTable jt = null;
JLabel sno1,sname1,sno2,sname2,ssex,sage,ssdept,label;
 Vector oneStu,stuInfo,stuFieldInfo;
 Connection con; @SuppressWarnings("unchecked")
public DesignFrame(){
super("学生管理");
setSize(540,360);
setVisible(true);
this.setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Container c=this.getContentPane();


SnoText1=new JTextField();
SnoText2=new JTextField();
SnameText1=new JTextField();
SnameText2=new JTextField();
SsexText=new JTextField();
SageText=new JTextField();
SsdeptText=new JTextField();

searchButton1=new JButton("查询");
searchButton2=new JButton("查询");

//this.setLayout(null); panel1=new JPanel();
panel1.setLayout(null);
//@SuppressWarnings("unused")

sno1=new JLabel("学号");
    sname1=new JLabel("姓名");
sno1.setBounds(20,18,50,50);
SnoText1.setBounds(60,30,80,25);
searchButton1.setBounds(160,30,80,25);
sname1.setBounds(20,68,50,50);
SnameText1.setBounds(60,80,80,25);
searchButton2.setBounds(160,80,80,25);
panel1.add(sno1);
panel1.add(SnoText1);
panel1.add(searchButton1);
panel1.add(sname1);
panel1.add(SnameText1);
panel1.add(searchButton2);
panel1.setBounds(0,0,270,150);

Border etched1=BorderFactory.createEtchedBorder();
Border titled1=BorderFactory.createTitledBorder(etched1,"");
panel1.setBorder(titled1);
panel1.setBackground(Color.PINK);
add(panel1);

    panel2=new JPanel();
panel2.setLayout(null);
addButton=new JButton("增加");
deleteButton=new JButton("删除");
updateButton=new JButton("修改");
label=new JLabel("当   前   的   浏   览   记   录:");
sno2=new JLabel("学号:");
sname2=new JLabel("姓名:");
ssex=new JLabel("性别:");
sage=new JLabel("年龄:");
ssdept=new JLabel("系别:");

addButton.setBounds(280,25,70,25);
deleteButton.setBounds(360,25,70,25);
updateButton.setBounds(440,25,70,25);
label.setBounds(305,70,250,35);

sno2.setBounds(300,95,50,50);
SnoText2.setBounds(350,110,100,20);
sname2.setBounds(300,135,50,50);
SnameText2.setBounds(350,150,100,20);
ssex.setBounds(300,180,50,50);
SsexText.setBounds(350,190,100,20);
sage.setBounds(300,220,50,50);
SageText.setBounds(350,230,100,20);
ssdept.setBounds(300,260,50,50);
SsdeptText.setBounds(350,270,100,20);

panel2.add(addButton);
panel2.add(deleteButton);
panel2.add(updateButton);
panel2.add(label);

panel2.add(sno2);
panel2.add(SnoText2);
panel2.add(sname2);
panel2.add(SnameText2);
panel2.add(ssex);
panel2.add(SsexText);
panel2.add(sage);
panel2.add(SageText);
panel2.add(ssdept);
panel2.add(SsdeptText);
panel2.setBounds(270,0,271,360);
panel2.setBackground(Color.GREEN);

add(panel2);



Statement stm;
        ResultSet rs;
        ResultSetMetaData rsmd;
        
         stuInfo = new Vector();
         stuFieldInfo = new Vector();
         con =null;
        try{
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
            con = DriverManager.getConnection 
              ("jdbc:microsoft:sqlserver://127.0.0.1:1433","kelly","123");              
            stm = con.createStatement();
            
            String sqlStr = "select * from mytable1";
            
            rs = stm.executeQuery(sqlStr);
            
            rsmd = rs.getMetaData();
            
            for(int i = 1; i <= rsmd.getColumnCount(); i++){
                stuFieldInfo.add(rsmd.getColumnName(i));
                
                //System.out.println(stuFieldInfo.elementAt(0));
            }
            
            while(rs.next()){
                oneStu = new Vector();
                
                for(int i = 1; i <= rsmd.getColumnCount(); i++)
                    oneStu.add(rs.getObject(i));
                stuInfo.add(oneStu);
            }
            
            rs.close();
            stm.close();
            con.close();
            
        }catch(Exception e){
            e.getMessage();
        }finally{
         try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        }
        
       jt = new JTable(stuInfo, stuFieldInfo);
        panel3 = new JScrollPane(jt);
        panel3.setBounds(0,150,270,210);
        add( panel3);
        
}
public static void main(String[]args){
new DesignFrame();
}}
我这个代码运行结果是有三个部分的,可多按几次运行,结果就不一样,有时只有一部分,有时只有两部分,不知是不是程序不稳定,请高手指教,谢谢……

解决方案 »

  1.   

    setVisible(true);
    放到最后没有使用布局管理器~~唉,……
    学习一下布局管理器吧。这样排布不是办法啊 
      

  2.   

    setVisible(true);
    放到最后就可以了不推荐在构造方法里构造JTable
    可以在窗体的加载事件里构造JTable另外连接数据库最好是有个单独的类,没这样写的
      

  3.   

    用布局管理器的话那些文本域的大小好难控制,不知怎么弄才好
    setVisible(true);放到最后了但还是不行哦……