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();
}}
我这个代码运行结果是有三个部分的,可多按几次运行,结果就不一样,有时只有一部分,有时只有两部分,不知是不是程序不稳定,请高手指教,谢谢……
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();
}}
我这个代码运行结果是有三个部分的,可多按几次运行,结果就不一样,有时只有一部分,有时只有两部分,不知是不是程序不稳定,请高手指教,谢谢……
放到最后没有使用布局管理器~~唉,……
学习一下布局管理器吧。这样排布不是办法啊
放到最后就可以了不推荐在构造方法里构造JTable
可以在窗体的加载事件里构造JTable另外连接数据库最好是有个单独的类,没这样写的
setVisible(true);放到最后了但还是不行哦……