I'm trying to display a JscrollPane using this code. but it's displaying a blank frame with just the "close" button displayed. Can't figure out why it wouldn't display. Any help would be greatly appreciated! :)
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
import edu.pitt.bank.Account;
import edu.pitt.bank.Transaction;
import edu.pitt.utilities.DbUtilities;
import edu.pitt.utilities.MySqlUtilities;
public class TransactionUI {
    private JFrame  frame;
    private JScrollPane transactionPane;
    private JTable tblTransactions;
    public TransactionUI(Account userAccount) {
        frame = new JFrame();
        frame.setTitle("Account Transactions");
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        transactionPane = new JScrollPane();
        frame.getContentPane().add(transactionPane);
        DbUtilities db = new MySqlUtilities();
        String [] cols = {"Type", "Amount", "Date"};
        String sql = "SELECT type, amount, transactionDate FROM srp63_bank1017.transaction;";
        try {
            System.out.println("use getDataTable()");
            DefaultTableModel transactionList = db.getDataTable(sql, cols);
            System.out.println("getDataTable() used");
            tblTransactions = new JTable(transactionList);
            tblTransactions.setFillsViewportHeight(true);
            tblTransactions.setShowGrid(true);
            tblTransactions.setGridColor(Color.BLACK);
            transactionPane.getViewport().add(tblTransactions);
        } catch (SQLException e) {
        e.printStackTrace();
    }       
        JButton btnClose = new JButton("Close");
        btnClose.setBounds(323, 212, 89, 23);           
        btnClose.setBounds(284, 214, 73, 23);
        frame.getContentPane().add(btnClose);
    }
    public JFrame getFrame() {
        return frame;
    } 
}
I use this to call the above frame from another class:
public void actionPerformed(ActionEvent arg0) { 
                if(userAccount.getAccountID() != null){
                    TransactionUI tUI = new TransactionUI(userAccount);
                    tUI.getFrame().setVisible(true);
                } else {
                    System.out.println("Account object must not be null");
                }
            }       
        });
Here is the getDataTable method...
public DefaultTableModel getDataTable(String sqlQuery, String[] customColumnNames) throws SQLException{
        ResultSet rs = getResultSet(sqlQuery);
        /* Metadata object contains additional information about a ResulSet, 
         * such as database column names, data types, etc...
         */
        ResultSetMetaData metaData = rs.getMetaData();
        // Get column names from the metadata object and store them in a Vector variable
        Vector<String> columnNames = new Vector<String>();
        for(int column = 0; column < customColumnNames.length; column++){
            columnNames.add(customColumnNames[column]);
        }
        // Create a nested Vector containing an entire table from the ResultSet
        Vector<Vector<Object>> data = new Vector<Vector<Object>>();
        while(rs.next()){
            Vector<Object> vector = new Vector<Object>();
            for(int columnIndex = 1; columnIndex <= metaData.getColumnCount(); columnIndex++){
                vector.add(rs.getObject(columnIndex));
            }
            data.add(vector);
        }
        return new DefaultTableModel(data, columnNames);
    }
I received no errors
 
     
    


