首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为何JTable表单和里面的数据都显示不出来

2012-11-07 
为什么JTable表单和里面的数据都显示不出来[aligncenter][/align][codeJava][/code]public class Studen

为什么JTable表单和里面的数据都显示不出来
[align=center][/align][code=Java][/code]public class StudentManger extends JFrame {

private JPanel contentPane;
private JTable table;
private JTextField studNo;
private JTextField studName;
private JTextField studAge;
private JTextField studSex;
private JTextField studClass;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
Object[][] playerInfo;
private JPanel panel;
private String[] columnNames;
private JTable table_1;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
StudentManger frame = new StudentManger();
frame.setVisible(true); 
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public StudentManger() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 613, 468);
this.connDB();
System.out.println("数据库连接成功");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);



JLabel lblNewLabel = new JLabel("学号:");
lblNewLabel.setBounds(10, 10, 57, 18);
contentPane.add(lblNewLabel);

studNo = new JTextField();
studNo.setBounds(50, 9, 106, 21);
contentPane.add(studNo);
studNo.setColumns(10);

JLabel lblNewLabel_1 = new JLabel("姓名:");
lblNewLabel_1.setBounds(178, 12, 45, 15);
contentPane.add(lblNewLabel_1);

studName = new JTextField();
studName.setBounds(233, 9, 106, 21);
contentPane.add(studName);
studName.setColumns(10);

JLabel label = new JLabel("性别:");
label.setBounds(366, 12, 45, 15);
contentPane.add(label);

studAge = new JTextField();
studAge.setBounds(421, 9, 106, 21);
contentPane.add(studAge);
studAge.setColumns(10);

JLabel lblNewLabel_2 = new JLabel("年龄:");
lblNewLabel_2.setBounds(10, 38, 57, 15);
contentPane.add(lblNewLabel_2);

studSex = new JTextField();
studSex.setBounds(50, 38, 106, 21);
contentPane.add(studSex);
studSex.setColumns(10);

JLabel lblNewLabel_3 = new JLabel("班级:");
lblNewLabel_3.setBounds(178, 37, 54, 15);
contentPane.add(lblNewLabel_3);

studClass = new JTextField();
studClass.setBounds(233, 40, 106, 21);
contentPane.add(studClass);
studClass.setColumns(10);

JButton btnAdd = new JButton("增加");
btnAdd.setBounds(22, 80, 93, 32);
contentPane.add(btnAdd);

JButton btnDelete = new JButton("删除");
btnDelete.setBounds(137, 80, 93, 32);
contentPane.add(btnDelete);

JButton btnUpdate = new JButton("修改");
btnUpdate.setBounds(252, 80, 93, 32);
contentPane.add(btnUpdate);

JButton btnSelete = new JButton("查询");
btnSelete.setBounds(367, 80, 93, 32);
contentPane.add(btnSelete);

JButton btnShow = new JButton("显示");
btnShow.setBounds(482, 80, 93, 32);
contentPane.add(btnShow);


}

public void display() {// 显示所有学生的基本信息
int i = 0;
int j = 0;
List al = new ArrayList();
try {
rs = stmt.executeQuery("select * from studInf");
while (rs.next()) { // 找出表中的记录数赋给i
al.add(rs.getString("studNo"));
al.add(rs.getString("studName"));
al.add(rs.getString("studAge"));
al.add(rs.getInt("studSex"));
al.add(rs.getString("studClass"));


i++;
}
} catch (SQLException e) {
e.printStackTrace();
}
playerInfo = new Object[i][5];
columnNames = new String[] { "学号", "姓名", "年龄", "性别", "班级" };

try {
rs = stmt.executeQuery("select * from studInf order by studNo");
while (rs.next()) {
playerInfo[j][0] = rs.getString("studNo");
playerInfo[j][1] = rs.getString("studName");
playerInfo[j][2] = rs.getInt("studAge");
playerInfo[j][3] = rs.getString("studSex");
playerInfo[j][4] = rs.getString("studClass");
j++;
}
} catch (SQLException e) {
e.printStackTrace();
}
JTable sTable = new JTable(playerInfo, columnNames);// 创建网格
//sTable.setBounds(0, 122, 597, 308);
panel.add(sTable);
JScrollPane scroll = new JScrollPane(sTable);
getContentPane().add(scroll);

}这是最关键的一部分代码,而且数据库的连接绝对没有错,数据库中也有数据~但是表单就是不能显示,

[解决办法]
1、你都没有哪里调用dispaly();
2、这样布局是不能显示的
把代码做了点修改,你仔细观察一下,功能是能实现的。

Java code
import java.awt.*; import javax.swing.*; import java.awt.event.*;import java.sql.*;import java.util.*;import java.util.List;public class StudentManger extends JFrame {    private JPanel contentPane=(JPanel)this.getContentPane();    JPanel jpn=new JPanel();    JPanel jps=new JPanel();    private JTable table;    private JTextField studNo;    private JTextField studName;    private JTextField studAge;    private JTextField studSex;    private JTextField studClass;    Connection con = null;    Statement stmt = null;    ResultSet rs = null;    Object[][] playerInfo;    private JPanel panel;    private String[] columnNames;    private JTable table_1;    int i=0,j=0;    /**    * Launch the application.    */    public static void main(String[] args) {    EventQueue.invokeLater(new Runnable() {    public void run() {    try {    StudentManger frame = new StudentManger();    Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();//得到屏幕的大小      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();    Dimension frameSize = frame.getSize();    if (frameSize.height > screenSize.height) {        frameSize.height = screenSize.height;    }    if (frameSize.width > screenSize.width) {        frameSize.width = screenSize.width;    }    frame.setLocation(0,0);     frame.setSize((int)screen.getWidth(),(int)screen.getHeight()-25);    frame.setVisible(true);     } catch (Exception e) {    e.printStackTrace();    }    }    });    }    /**    * Create the frame.    */    public StudentManger() {    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    setBounds(100, 100, 613, 468);    this.connDB();    System.out.println("数据库连接成功");    //contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));    contentPane.setLayout(new BorderLayout());             JLabel lblNewLabel = new JLabel("学号:");    lblNewLabel.setBounds(10, 10, 57, 18);    jpn.add(lblNewLabel);    studNo = new JTextField();    studNo.setBounds(50, 9, 106, 21);    jpn.add(studNo);    studNo.setColumns(10);    JLabel lblNewLabel_1 = new JLabel("姓名:");    lblNewLabel_1.setBounds(178, 12, 45, 15);    jpn.add(lblNewLabel_1);    studName = new JTextField();    studName.setBounds(233, 9, 106, 21);    jpn.add(studName);    studName.setColumns(10);    JLabel label = new JLabel("性别:");    label.setBounds(366, 12, 45, 15);    jpn.add(label);    studAge = new JTextField();    studAge.setBounds(421, 9, 106, 21);    jpn.add(studAge);    studAge.setColumns(10);    JLabel lblNewLabel_2 = new JLabel("年龄:");    lblNewLabel_2.setBounds(10, 38, 57, 15);    jpn.add(lblNewLabel_2);    studSex = new JTextField();    studSex.setBounds(50, 38, 106, 21);    jpn.add(studSex);    studSex.setColumns(10);    JLabel lblNewLabel_3 = new JLabel("班级:");    lblNewLabel_3.setBounds(178, 37, 54, 15);    jpn.add(lblNewLabel_3);    studClass = new JTextField();    studClass.setBounds(233, 40, 106, 21);    jpn.add(studClass);    studClass.setColumns(10);    JButton btnAdd = new JButton("增加");    btnAdd.setBounds(22, 80, 93, 32);    jpn.add(btnAdd);    JButton btnDelete = new JButton("删除");    btnDelete.setBounds(137, 80, 93, 32);    jps.add(btnDelete);    JButton btnUpdate = new JButton("修改");    btnUpdate.setBounds(252, 80, 93, 32);    jps.add(btnUpdate);    JButton btnSelete = new JButton("查询");    btnSelete.setBounds(367, 80, 93, 32);    jps.add(btnSelete);    btnSelete.addActionListener(new ActionListener()    {        public void actionPerformed(ActionEvent arg0) {             display();             contentPane.revalidate();        }    }    );    JButton btnShow = new JButton("显示");    btnShow.setBounds(482, 80, 93, 32);    jps.add(btnShow);      btnShow.addActionListener(new ActionListener()    {        public void actionPerformed(ActionEvent arg0) {             display();              contentPane.revalidate();        }     }    );    contentPane.add(jpn,BorderLayout.NORTH);    contentPane.add(jps,BorderLayout.SOUTH);        //display();如果一开始就显示就直接调用。    }        /*这个是我测试的,我调用自己的数据库,其实有些地方可以优化的。    public void  display() {// 显示所有学生的基本信息        int i=0,j=0;        List al = new ArrayList();        Connection conn = DBConnection.getConnection();        try {        Statement stmt=conn.createStatement();        ResultSet rs = stmt.executeQuery("select * from messageinfo");         while(rs.next())        {            i++;        }        ResultSet rss=stmt.executeQuery("select * from messageinfo order by nid");        columnNames = new String[] { "学号", "姓名", "年龄", "性别", "班级" };         playerInfo = new Object[i][columnNames.length];        while (rss.next()) {          playerInfo[j][0] = rss.getInt("ncod");        playerInfo[j][1] = rss.getString("ntype");        playerInfo[j][2] = rss.getString("nctime");        playerInfo[j][3] = rss.getString("netime");        playerInfo[j][4] = rss.getString("medtime");         j++;        }        } catch (SQLException e) {        e.printStackTrace();        }        JTable sTable = new JTable(playerInfo, columnNames);// 创建网格        //sTable.setBounds(0, 122, 597, 308);        //panel.add(sTable);        JScrollPane scroll = new JScrollPane(sTable);        contentPane.add(scroll,BorderLayout.CENTER);     }*/        //你的dispaly(),        public void display() {// 显示所有学生的基本信息int i = 0;int j = 0;List al = new ArrayList();try {rs = stmt.executeQuery("select * from studInf");while (rs.next()) { // 找出表中的记录数赋给ial.add(rs.getString("studNo"));al.add(rs.getString("studName"));al.add(rs.getString("studAge"));al.add(rs.getInt("studSex"));al.add(rs.getString("studClass"));i++;//这里可以优化}} catch (SQLException e) {e.printStackTrace();}playerInfo = new Object[i][5];columnNames = new String[] { "学号", "姓名", "年龄", "性别", "班级" };try {rs = stmt.executeQuery("select * from studInf order by studNo");while (rs.next()) {playerInfo[j][0] = rs.getString("studNo");playerInfo[j][1] = rs.getString("studName");playerInfo[j][2] = rs.getInt("studAge");playerInfo[j][3] = rs.getString("studSex");playerInfo[j][4] = rs.getString("studClass");j++;}} catch (SQLException e) {e.printStackTrace();}JTable sTable = new JTable(playerInfo, columnNames);// 创建网格//sTable.setBounds(0, 122, 597, 308);//panel.add(sTable);JScrollPane scroll = new JScrollPane(sTable);contentPane.add(scroll,BorderLayout.CENTER); } 

热点排行
Bad Request.