//---------------------------------------------------------------------------- // // Module: JTableBean.java // // Author: Julius Dichter 2000 (c) // // The Bean allow a client to render a 2-D array of Object // as JTable // //---------------------------------------------------------------------------- import java.awt.Dimension; import javax.swing.*; import javax.swing.table.*; import javax.swing.border.*; import java.beans.*; // for PropertyChangeEvent public class JTableBean extends JPanel { private JTable tableView; private JScrollPane sPane; private AbstractTableModel dataModel; private Object[][] data; private Object[] labels; public static void main (String args[]) { JFrame frame = new JFrame("DBBean Tester"); Object [][] data = {{"hi", "bye", "yo"},{"big","medium", "small"}}; Object [] labels = {"RED","BLUE","GREEN"}; JTableBean jtb = new JTableBean(data, labels); frame.getContentPane().add(jtb); frame.setSize(jtb.getPreferredSize()); frame.show(); jtb.display();} public JTableBean(Object [][] data, Object [] labels) { this.data = data; this.labels = labels; } public void display() { if (sPane != null) { remove(sPane); validate(); sPane = null; } if (tableView != null) tableView = null; if (dataModel != null)dataModel = null; final int cols = data[0].length; final int rows = data.length; System.out.println("Got " + cols + " columns"); System.out.println("Got " + rows + " rows"); // final Object [][] data = new Object[rows][cols]; // final String [] colNames = new String[cols]; TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return cols; } public int getRowCount() { return rows; } public Object getValueAt(int x, int y) { return data[x][y]; } public boolean isCellEditable(int row, int col) { return true; } public String getColumnName(int i) { return labels[i].toString(); } public void setValueAt(Object o, int x, int y) { String cellValue = o.toString(); // store the original value; data[x][y] = o; // set the new value } } ; tableView = new JTable(dataModel); sPane = JTable.createScrollPaneForTable(tableView); sPane.setBorder(new BevelBorder(BevelBorder.LOWERED)); sPane.setPreferredSize(new Dimension(295,295)); tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); add(sPane); setVisible(true); validate(); } // display() // for future use /* public void propertyChange(PropertyChangeEvent pce) { someMethodTBA((String)pce.getNewValue()); } */ public Dimension getMinimumSize() { return getPreferredSize(); } public Dimension getPreferredSize() { return new Dimension(300,300); } } // class JTableBean