Mega Code Archive

 
Categories / Java / Swing Components
 

Fixed Table Row Example

// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html /* (swing1.1.1beta1) */ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.UIManager; import javax.swing.table.AbstractTableModel; /**  * @version 1.0 03/05/99  */ public class FixedRowExample extends JFrame {   Object[][] data;   Object[] column;   JTable fixedTable, table;   private int FIXED_NUM = 2;   public FixedRowExample() {     super("Fixed Row Example");     data = new Object[][] { { "a", "", "", "", "", "" },         { "", "b", "", "", "", "" }, { "", "", "c", "", "", "" },         { "", "", "", "d", "", "" }, { "", "", "", "", "e", "" },         { "", "", "", "", "", "f" },         { "fixed1", "", "", "", "", "", "", "" },         { "fixed2", "", "", "", "", "", "", "" } };     column = new Object[] { "A", "B", "C", "D", "E", "F" };     AbstractTableModel model = new AbstractTableModel() {       public int getColumnCount() {         return column.length;       }       public int getRowCount() {         return data.length - FIXED_NUM;       }       public String getColumnName(int col) {         return (String) column[col];       }       public Object getValueAt(int row, int col) {         return data[row][col];       }       public void setValueAt(Object obj, int row, int col) {         data[row][col] = obj;       }       public boolean CellEditable(int row, int col) {         return true;       }     };     AbstractTableModel fixedModel = new AbstractTableModel() {       public int getColumnCount() {         return column.length;       }       public int getRowCount() {         return FIXED_NUM;       }       public Object getValueAt(int row, int col) {         return data[row + (data.length - FIXED_NUM)][col];       }     };     table = new JTable(model);     table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);     table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);     fixedTable = new JTable(fixedModel);     fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);     fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);     JScrollPane scroll = new JScrollPane(table);     scroll         .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);     JScrollPane fixedScroll = new JScrollPane(fixedTable) {       public void setColumnHeaderView(Component view) {       } // work around     }; //     // fixedScroll.setColumnHeader(null);     fixedScroll         .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);     JScrollBar bar = fixedScroll.getVerticalScrollBar();     JScrollBar dummyBar = new JScrollBar() {       public void paint(Graphics g) {       }     };     dummyBar.setPreferredSize(bar.getPreferredSize());     fixedScroll.setVerticalScrollBar(dummyBar);     final JScrollBar bar1 = scroll.getHorizontalScrollBar();     JScrollBar bar2 = fixedScroll.getHorizontalScrollBar();     bar2.addAdjustmentListener(new AdjustmentListener() {       public void adjustmentValueChanged(AdjustmentEvent e) {         bar1.setValue(e.getValue());       }     });     scroll.setPreferredSize(new Dimension(400, 100));     fixedScroll.setPreferredSize(new Dimension(400, 52)); // Hmm...     getContentPane().add(scroll, BorderLayout.CENTER);     getContentPane().add(fixedScroll, BorderLayout.SOUTH);   }   public static void main(String[] args) {     FixedRowExample frame = new FixedRowExample();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     frame.pack();     frame.setVisible(true);   } }