import java.awt.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import com.zfqjava.swing.*; import com.zfqjava.swing.cell.*; public class LockDemo extends JDataGridBean { public LockDemo() { super(); configure(); } private void configure() { JDataGrid dataGrid = getDataGrid(); dataGrid.setRowHeight(40); dataGrid.setModel(createModel()); JDataGrid columnHeader = createColumnHeader(); // remove the default column header dataGrid.setTableHeader(null); // add a datagrid as column header dataGrid.setColumnHeaderView(columnHeader); JDataGrid rowHeader = createRowHeader(); // remove the default row header dataGrid.setRowHeader(null); // add a datagrid as row header dataGrid.setRowHeaderView(rowHeader); } public static void main(String[] args) { final LockDemo demo = new LockDemo(); demo.setDefaultCloseOperation(JBean.EXIT_ON_CLOSE); SwingUtilities.invokeLater(new Runnable() { public void run() { demo.showFrame(); demo.getDataGrid().requestFocus(); } }); } private JDataGrid createRowHeader() { JDataGrid dataGrid = new JDataGrid(); dataGrid.setCellSelectionEnabled(true); dataGrid.setEditable(false); dataGrid.setBackground(UIManager.getColor("TableHeader.background")); DataGridModel model = new DefaultDataGridModel(11, 2); model.setValueAt("Month", 0, 1); model.setValueAt("Name", 1, 0); model.setValueAt("Scene", 1, 1); model.setValueAt("Crofton", 2, 0); model.setValueAt("Actual", 2, 1); model.setValueAt("Bugdet2004", 3, 1); model.setValueAt("LE1", 4, 1); model.setValueAt("Elk Falls", 5, 0); model.setValueAt("Actual", 5, 1); model.setValueAt("Bugdet2004", 6, 1); model.setValueAt("LE1", 7, 1); model.setValueAt("Powel River", 8, 0); model.setValueAt("Actual", 8, 1); model.setValueAt("Bugdet2004", 9, 1); model.setValueAt("LE1", 10, 1); model.merge(new Cell(2, 4, 0, 0)); model.merge(new Cell(5, 7, 0, 0)); model.merge(new Cell(8, 10, 0, 0)); dataGrid.setModel(model); return dataGrid; } private JDataGrid createColumnHeader() { JDataGrid dataGrid = new JDataGrid(); dataGrid.setCellSelectionEnabled(true); dataGrid.setEditable(false); dataGrid.setBackground(UIManager.getColor("TableHeader.background")); DataGridModel model = new DefaultDataGridModel(1, 12); model.setValueAt("Q1", 0, 0); model.setValueAt("Q2", 0, 3); model.setValueAt("Q3", 0, 6); model.setValueAt("Q4", 0, 9); model.merge(new Cell(0, 0, 0, 2)); model.merge(new Cell(0, 0, 3, 5)); model.merge(new Cell(0, 0, 6, 8)); model.merge(new Cell(0, 0, 9, 11)); dataGrid.setModel(model); return dataGrid; } protected DataGridModel createModel() { DataGridModel model = new DefaultDataGridModel(11, 12); String[] months = {"01 JAN", "02 FEB", "03 MAR", "04 APR", "05 MAY", "06 JUN", "07 JUL", "08 AUG", "09 SEP", "10 OCT", "11 NOV", "12 DEC"}; String quantity = "Quantity
Del Pr US$/t"; // some test data String data = "23
100"; SimpleAttributeSet a = new SimpleAttributeSet(); StyleConstants.setBackground(a, UIManager.getColor("TableHeader.background")); for(int i=0; i<12; i++) { model.setValueAt(months[i], 0, i); model.setCellAttributes(a, 0, i); model.setValueAt(quantity, 1, i); model.setCellAttributes(a, 1, i); for(int j=2; j<11; j++) { model.setValueAt(data, j, i); } } return model; } }