import java.awt.*; import java.awt.event.*; import java.util.Random; import java.util.Date; import java.text.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.AttributeSet; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import com.zfqjava.swing.*; import com.zfqjava.swing.cell.*; public class CellBorderDemo extends JDataGridBean { public CellBorderDemo() { super(); configure(); } private void configure() { final JDataGrid dataGrid = getDataGrid(); // dataGrid.setIntercellSpacing(new Dimension(10, 10)); final JButton a = new JButton("Restore Model..."); a.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataGrid.setModel(createModel()); } }); getToolBar(JDataGridBean.MAIN_TOOLBAR).add(a); } protected DataGridModel createModel() { DataGridModel model = new DefaultDataGridModel(23, 13); // LargeDataGridModel model = new LargeDataGridModel(Character.MAX_VALUE, 256); // demo attributes SimpleAttributeSet attr = new SimpleAttributeSet(); // 0 row demo color attr = new SimpleAttributeSet(); CellStyle.setTopBorder(attr, new CellStyle.Border(Color.blue, null)); CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.blue, null)); CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.blue, null)); CellStyle.setRightBorder(attr, new CellStyle.Border(Color.blue, null)); setBorder(model, attr, 1, 1); attr = new SimpleAttributeSet(); CellStyle.setTopBorder(attr, new CellStyle.Border(Color.green, null)); // CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.green, null)); // CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.green, null)); // CellStyle.setRightBorder(attr, new CellStyle.Border(Color.green, null)); setBorder(model, attr, 3, 3); attr = new SimpleAttributeSet(); // CellStyle.setTopBorder(attr, new CellStyle.Border(Color.red, null)); CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.red, null)); // CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.red, null)); // CellStyle.setRightBorder(attr, new CellStyle.Border(Color.red, null)); setBorder(model, attr, 5, 5); attr = new SimpleAttributeSet(); // CellStyle.setTopBorder(attr, new CellStyle.Border(Color.yellow, null)); // CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.yellow, null)); CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.yellow, null)); // CellStyle.setRightBorder(attr, new CellStyle.Border(Color.yellow, null)); setBorder(model, attr, 7, 7); attr = new SimpleAttributeSet(); // CellStyle.setTopBorder(attr, new CellStyle.Border(Color.pink, null)); // CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.pink, null)); // CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.pink, null)); CellStyle.setRightBorder(attr, new CellStyle.Border(Color.pink, null)); setBorder(model, attr, 9, 9); attr = new SimpleAttributeSet(); CellStyle.setTopBorder(attr, new CellStyle.Border(Color.orange, null)); CellStyle.setLeftBorder(attr, new CellStyle.Border(Color.orange, null)); CellStyle.setBottomBorder(attr, new CellStyle.Border(Color.orange, null)); CellStyle.setRightBorder(attr, new CellStyle.Border(Color.orange, null)); setBorder(model, attr, 11, 11); return model; } private void setBorder(DataGridModel model, AttributeSet a, int row, int column) { model.setCellAttributes(a, row, column); // always set the cell top, left, bottom, right CellStyle.Border border = null; // top border = CellStyle.getTopBorder(a); if(border != null) { if(row > 0) { AttributeSet as = model.getCellAttributes(row-1, column); SimpleAttributeSet s = new SimpleAttributeSet(); if(as != null) { s.addAttributes(as); } CellStyle.setBottomBorder(s, border); model.setCellAttributes(s, row-1, column); } } // left border = CellStyle.getLeftBorder(a); if(border != null) { if(column > 0) { AttributeSet as = model.getCellAttributes(row, column-1); SimpleAttributeSet s = new SimpleAttributeSet(); if(as != null) { s.addAttributes(as); } CellStyle.setRightBorder(s, border); model.setCellAttributes(s, row, column-1); } } // bottom border = CellStyle.getBottomBorder(a); if(border != null) { if(row < model.getRowCount()-1) { AttributeSet as = model.getCellAttributes(row+1, column); SimpleAttributeSet s = new SimpleAttributeSet(); if(as != null) { s.addAttributes(as); } CellStyle.setTopBorder(s, border); model.setCellAttributes(s, row+1, column); } } // right border = CellStyle.getRightBorder(a); if(border != null) { if(column < model.getColumnCount()-1) { AttributeSet as = model.getCellAttributes(row, column+1); SimpleAttributeSet s = new SimpleAttributeSet(); if(as != null) { s.addAttributes(as); } CellStyle.setLeftBorder(s, border); model.setCellAttributes(s, row, column+1); } } } public static void main(String[] args) { final CellBorderDemo demo = new CellBorderDemo(); demo.setDefaultCloseOperation(JBean.EXIT_ON_CLOSE); SwingUtilities.invokeLater(new Runnable() { public void run() { demo.showFrame(); demo.getDataGrid().requestFocus(); } }); } }