Source Code : Column Border Table Example

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Column Border Table Example

Column Border Table Example
 
// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html

/* (swing1.1) */


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.AbstractBorder;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;

/**
 * @version 1.0 3/06/99
 */
public class ColumnBorderTableExample extends JFrame {

  public ColumnBorderTableExample() {
    super("Column Border Example");

    DefaultTableModel dm = new DefaultTableModel(4, 10);
    JTable table = new JTable(dm);
    table.setIntercellSpacing(new Dimension(0, 0));

    Color color = table.getGridColor();
    BorderCellRenderer[] renderers = new BorderCellRenderer[6];
    renderers[0] = createRenderer(color, new Insets(0, 0, 0, 1));
    renderers[1] = createRenderer(color, new Insets(0, 1, 0, 1));
    renderers[2] = createRenderer(color, new Insets(0, 1, 0, 2));
    renderers[3] = createRenderer(color, new Insets(0, 2, 0, 2));
    renderers[4] = createRenderer(color, new Insets(0, 2, 0, 0));
    renderers[5] = createRenderer(Color.red, new Insets(0, 1, 1, 1));

    TableColumnModel model = table.getColumnModel();
    model.getColumn(1).setCellRenderer(renderers[0]);
    model.getColumn(2).setCellRenderer(renderers[0]);
    model.getColumn(3).setCellRenderer(renderers[0]);
    model.getColumn(4).setCellRenderer(renderers[1]);
    model.getColumn(5).setCellRenderer(renderers[2]);
    model.getColumn(6).setCellRenderer(renderers[3]);
    model.getColumn(7).setCellRenderer(renderers[4]);
    model.getColumn(8).setCellRenderer(renderers[5]);

    JScrollPane scroll = new JScrollPane(table);
    getContentPane().add(scroll, BorderLayout.CENTER);
  }

  public static void main(String[] args) {
    ColumnBorderTableExample frame = new ColumnBorderTableExample();
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    frame.setSize(300, 120);
    frame.setVisible(true);
  }

  private static BorderCellRenderer createRenderer(Color color, Insets insets) {
    BorderCellRenderer renderer = new BorderCellRenderer();
    renderer.setColumnBorder(new LinesBorder(color, insets));
    return renderer;
  }
}

class BorderCellRenderer extends JLabel implements TableCellRenderer {
  protected Border noFocusBorder;

  protected Border columnBorder;

  public BorderCellRenderer() {
    noFocusBorder = new EmptyBorder(1, 2, 1, 2);
    setOpaque(true);
  }

  public Component getTableCellRendererComponent(JTable table, Object value,
      boolean isSelected, boolean hasFocus, int row, int column) {
    if (isSelected) {
      setForeground(table.getSelectionForeground());
      setBackground(table.getSelectionBackground());
    } else {
      setForeground(table.getForeground());
      setBackground(table.getBackground());
    }
    setFont(table.getFont());

    if (hasFocus) {
      setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
      if (table.isCellEditable(row, column)) {
        setForeground(UIManager.getColor("Table.focusCellForeground"));
        setBackground(UIManager.getColor("Table.focusCellBackground"));
      }
    } else {
      if (value instanceof CellBorder) {
        Border border = ((CellBorder) value).getBorder();
        setBorder(border);
      } else {
        if (columnBorder != null) {
          setBorder(columnBorder);
        } else {
          setBorder(noFocusBorder);
        }
      }
    }
    setText((value == null) ? "" : value.toString());
    return this;
  }

  public void setColumnBorder(Border border) {
    columnBorder = border;
  }

  public Border getColumnBorder() {
    return columnBorder;
  }

}

interface CellBorder {

  public Border getBorder();

  public Border getBorder(int row, int column);

  public void setBorder(Border border);

  public void setBorder(Border border, int row, int column);

}

class LinesBorder extends AbstractBorder implements SwingConstants {
  protected int northThickness;

  protected int southThickness;

  protected int eastThickness;

  protected int westThickness;

  protected Color northColor;

  protected Color southColor;

  protected Color eastColor;

  protected Color westColor;

  public LinesBorder(Color color) {
    this(color, 1);
  }

  public LinesBorder(Color color, int thickness) {
    setColor(color);
    setThickness(thickness);
  }

  public LinesBorder(Color color, Insets insets) {
    setColor(color);
    setThickness(insets);
  }

  public void paintBorder(Component c, Graphics g, int x, int y, int width,
      int height) {
    Color oldColor = g.getColor();

    g.setColor(northColor);
    for (int i = 0; i < northThickness; i++) {
      g.drawLine(x, y + i, x + width - 1, y + i);
    }
    g.setColor(southColor);
    for (int i = 0; i < southThickness; i++) {
      g
          .drawLine(x, y + height - i - 1, x + width - 1, y + height
              - i - 1);
    }
    g.setColor(eastColor);
    for (int i = 0; i < westThickness; i++) {
      g.drawLine(x + i, y, x + i, y + height - 1);
    }
    g.setColor(westColor);
    for (int i = 0; i < eastThickness; i++) {
      g.drawLine(x + width - i - 1, y, x + width - i - 1, y + height - 1);
    }

    g.setColor(oldColor);
  }

  public Insets getBorderInsets(Component c) {
    return new Insets(northThickness, westThickness, southThickness,
        eastThickness);
  }

  public Insets getBorderInsets(Component c, Insets insets) {
    return new Insets(northThickness, westThickness, southThickness,
        eastThickness);
  }

  public boolean isBorderOpaque() {
    return true;
  }

  public void setColor(Color c) {
    northColor = c;
    southColor = c;
    eastColor = c;
    westColor = c;
  }

  public void setColor(Color c, int direction) {
    switch (direction) {
    case NORTH:
      northColor = c;
      break;
    case SOUTH:
      southColor = c;
      break;
    case EAST:
      eastColor = c;
      break;
    case WEST:
      westColor = c;
      break;
    default:
    }
  }

  public void setThickness(int n) {
    northThickness = n;
    southThickness = n;
    eastThickness = n;
    westThickness = n;
  }

  public void setThickness(Insets insets) {
    northThickness = insets.top;
    southThickness = insets.bottom;
    eastThickness = insets.right;
    westThickness = insets.left;
  }

  public void setThickness(int n, int direction) {
    switch (direction) {
    case NORTH:
      northThickness = n;
      break;
    case SOUTH:
      southThickness = n;
      break;
    case EAST:
      eastThickness = n;
      break;
    case WEST:
      westThickness = n;
      break;
    default:
    }
  }

  public void append(LinesBorder b, boolean isReplace) {
    if (isReplace) {
      northThickness = b.northThickness;
      southThickness = b.southThickness;
      eastThickness = b.eastThickness;
      westThickness = b.westThickness;
    } else {
      northThickness = Math.max(northThickness, b.northThickness);
      southThickness = Math.max(southThickness, b.southThickness);
      eastThickness = Math.max(eastThickness, b.eastThickness);
      westThickness = Math.max(westThickness, b.westThickness);
    }
  }

  public void append(Insets insets, boolean isReplace) {
    if (isReplace) {
      northThickness = insets.top;
      southThickness = insets.bottom;
      eastThickness = insets.right;
      westThickness = insets.left;
    } else {
      northThickness = Math.max(northThickness, insets.top);
      southThickness = Math.max(southThickness, insets.bottom);
      eastThickness = Math.max(eastThickness, insets.right);
      westThickness = Math.max(westThickness, insets.left);
    }
  }

}

           
         
  

Thank with us