即使在使用JScrollPane

时间:2016-04-29 13:22:48

标签: java swing jtable jscrollpane

这是Display database table with swing

的后续问题

我将我的表包装到了一个JScrollPane,但列和#39;标题仍未显示!

谁能告诉我出了什么问题?

try {
    con = (Connection) DriverManager.getConnection(DATABASE_URL , USERNAME, PASSWORD);
    stmt = (Statement) con.createStatement();
    ResultSet rs = stmt.executeQuery(QUERY_FIND_ITEMS);

        {
    ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData();
    int columns = md.getColumnCount();

    //  Get column names
    for (int i = 1; i <= columns; i++)
    {
        columnNames.add( md.getColumnName(i) );
    }

    //  Get row data
    while (rs.next())
    {
        ArrayList row = new ArrayList(columns);

        for (int i = 1; i <= columns; i++)
        {
            row.add( rs.getObject(i) );
        }

        data.add( row );
    }
}
}   
catch (SQLException e)
{
    System.out.println( e.getMessage() );
}

Vector<String> columnNamesVector = new Vector();
Vector dataVector = new Vector();

for (int i = 0; i < data.size(); i++)
{
    ArrayList subArray = (ArrayList)data.get(i);
    Vector subVector = new Vector();

    for (int j = 0; j < subArray.size(); j++)
    {
        subVector.add(subArray.get(j));
    }
    dataVector.add(subVector);
}

for (int i = 0; i < columnNames.size(); i++ ) {
    columnNamesVector.add(columnNames.get(i));
}
//  Create table with database data    
JTable table = new JTable(dataVector, columnNamesVector)
{
    public Class getColumnClass(int column)
    {

        for (int row = 0; row < getRowCount(); row++)
        {
            Object o = getValueAt(row, column);

            if (o != null)
            {
                return o.getClass();
            }
        }


        return Object.class;
    }
};


          JScrollPane scrollPane =new JScrollPane(table);
            getContentPane().add( scrollPane, BorderLayout.WEST );

            JPanel buttonPanel = new JPanel();
            getContentPane().add( buttonPanel, BorderLayout.SOUTH );

            table.setForeground(Color.BLUE);

1 个答案:

答案 0 :(得分:2)

catch (SQLException e)
{
    System.out.println( e.getMessage() );
}

如果数据库查询失败,catch块结束后的代码将无法正常工作。最好在try块中包含该代码。

提示:改变

System.out.println( e.getMessage() ); 

e.printStackTrace(); 

较短的 &amp; 提供更多信息。