Question

These are my codes for my jTable in java swing.

private JTable getJTable() {
    if (jTable == null) {
        Vector columnNames = new Vector(); //Vector class allows dynamic array of objects
        Vector data = new Vector();
        JPanel panel = new JPanel();   
        panel.setSize(new Dimension(198, 106));

        try {
            DBController db = new DBController();
            db.setUp("IT Innovation Project");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
            String dsn = "IT Innovation Project";
            String s = "jdbc:odbc:" + dsn;
            Connection con = DriverManager.getConnection(s, "", "");
            String sql = "Select * from forumTopics";
            java.sql.Statement statement = con.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            ResultSetMetaData metaData = resultSet.getMetaData();
            int columns = metaData.getColumnCount();

            for (int i = 1; i <= columns; i++) {
                columnNames.addElement(metaData.getColumnName(i));
            }

            while (resultSet.next()) {
                Vector row = new Vector(columns);
                for (int i = 1; i <= columns; i++) {
                    row.addElement(resultSet.getObject(i));
                }
                data.addElement(row);
            }

            resultSet.close();
            ((Connection) statement).close();
        } catch (Exception e) {
            System.out.println(e);
        }

        jTable = new JTable(data, columnNames);
        TableColumn column;

        for (int i = 0; i < jTable.getColumnCount(); i++) {
            column = jTable.getColumnModel().getColumn(i);
            column.setMaxWidth(250);
        }

        String header[] = {"description", "title", "category", "posted by"};  

        for(int i=0;i<jTable.getColumnCount();i++) { 
            TableColumn column1 = jTable.getTableHeader().getColumnModel().getColumn(i);    
            column1.setHeaderValue(header[i]);  
        } 

        jTable.setBounds(new Rectangle(82, 218, 736, 292));
        jTable.setEnabled(false);
        jTable.setRowHeight(50);
        jTable.getRowHeight();         
    }
    return jTable;
}

I set an array for the header of my table. However, the program only shows the data inside my database without any header. Can somebody please enlighten me? Thanks in advance.

Was it helpful?

Solution

Put your JTable in JScrollPane like

add(new JScrollPane( getJTable() ) );
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top