by rohan26may » Mon Oct 06, 2008 4:54 am
I tried following program, but the cells are not getting colored...
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.TableCellRenderer;
import com.jidesoft.grid.AbstractStyleTableModel;
import com.jidesoft.grid.CellStyle;
import com.jidesoft.grid.CellStyleTable;
import com.jidesoft.grid.RendererWrapper;
import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.swing.JideSwingUtilities;
/**
* @version 1.0 12/25/98
*/
public class JideTableExample extends JFrame {
/**
*
*/
private static final long serialVersionUID = -6984627985903179581L;
public static class GradientCellStyle extends CellStyle {
private Color _startColor;
private Color _endColor;
private boolean _isVertical = true;
public Color getStartColor() {
return _startColor;
}
public void setStartColor(Color startColor) {
_startColor = startColor;
}
public Color getEndColor() {
return _endColor;
}
public void setEndColor(Color endColor) {
_endColor = endColor;
}
public boolean isVertical() {
return _isVertical;
}
public void setVertical(boolean vertical) {
_isVertical = vertical;
}
}
public static class GradientLabel extends JLabel {
/**
*
*/
private static final long serialVersionUID = -5317280973961718687L;
private Color _startColor;
private Color _endColor;
private boolean _isVertical = true;
public GradientLabel() {
}
public GradientLabel(Icon image) {
super(image);
}
public GradientLabel(Icon image, int horizontalAlignment) {
super(image, horizontalAlignment);
}
public GradientLabel(String text) {
super(text);
}
public GradientLabel(String text, int horizontalAlignment) {
super(text, horizontalAlignment);
}
public GradientLabel(String text, Icon icon, int horizontalAlignment) {
super(text, icon, horizontalAlignment);
}
public Color getStartColor() {
return _startColor;
}
public void setStartColor(Color startColor) {
_startColor = startColor;
}
public Color getEndColor() {
return _endColor;
}
public void setEndColor(Color endColor) {
_endColor = endColor;
}
public boolean isVertical() {
return _isVertical;
}
public void setVertical(boolean vertical) {
_isVertical = vertical;
}
@Override
protected void paintComponent(Graphics g) {
if (getStartColor() != null && getEndColor() != null) {
JideSwingUtilities.fillGradient((Graphics2D) g, new Rectangle(0, 0, getWidth(), getHeight()), getStartColor(), getEndColor(), isVertical());
}
super.paintComponent(g);
}
}
final String SEPARATOR = "SEPARATOR";
public JideTableExample() {
super("Block ComboBox Example");
StyleTableTableModel _tableModel = new StyleTableTableModel();
CellStyleTable _table = new CellStyleTable(_tableModel) {
/**
*
*/
private static final long serialVersionUID = -3215234241347396496L;
private Color _saveStartColor;
private Color _saveEndColor;
//@Override
protected void customizeRendererComponent(int row, int column, Component component, CellStyle cellStyle) {
super.customizeRendererComponent(row, column, component, cellStyle);
Component rendererComponent = component;
//boolean isRendererWrapper = false;
if (rendererComponent instanceof RendererWrapper) {
rendererComponent = ((RendererWrapper) rendererComponent).getActualRenderer();
if (rendererComponent != null) {
//isRendererWrapper = true;
}
else {
rendererComponent = component;
}
}
if (rendererComponent instanceof GradientLabel && cellStyle instanceof GradientCellStyle) {
if (((GradientCellStyle) cellStyle).getStartColor() != null) {
if (_saveStartColor == null) {
_saveStartColor = ((GradientLabel) rendererComponent).getStartColor();
}
((GradientLabel) rendererComponent).setStartColor(((GradientCellStyle) cellStyle).getStartColor());
}
if (((GradientCellStyle) cellStyle).getEndColor() != null) {
if (_saveEndColor == null) {
_saveEndColor = ((GradientLabel) rendererComponent).getEndColor();
}
((GradientLabel) rendererComponent).setEndColor(((GradientCellStyle) cellStyle).getEndColor());
}
((GradientLabel) rendererComponent).setVertical(((GradientCellStyle) cellStyle).isVertical());
}
}
@Override
public void releaseRendererComponent(TableCellRenderer renderer, int row, int column, Component component) {
super.releaseRendererComponent(renderer, row, column, component);
Component rendererComponent = component;
//boolean isRendererWrapper = false;
if (rendererComponent instanceof RendererWrapper) {
rendererComponent = ((RendererWrapper) rendererComponent).getActualRenderer();
if (rendererComponent != null) {
//isRendererWrapper = true;
}
else {
rendererComponent = component;
}
}
if (rendererComponent instanceof GradientLabel) {
((GradientLabel) rendererComponent).setStartColor(_saveStartColor);
_saveStartColor = null;
((GradientLabel) rendererComponent).setEndColor(_saveEndColor);
_saveEndColor = null;
((GradientLabel) rendererComponent).setVertical(true);
}
}
};
getContentPane().setLayout(new FlowLayout());
getContentPane().add(_table);
setSize(400, 400);
setLocation(100, 100);
setVisible(true);
}
public JideTableExample(Color color) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {/*
super("Block ComboBox Example");
JideButton button = new JideButton("Do Nothing!");
button.setOpaque(true);
button.setBackground(color);
//button.setContentAreaFilled(true);
//button.setRequestFocusEnabled(false);
//button.setFocusable(false);
JTable table = new JTable(3,3);
TableColumn column = new TableColumn();
table.addColumn(column);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(button);
getContentPane().add(table);
setSize(300, 100);
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
setVisible(true);
*/}
public static void main(String args[]) {
LookAndFeelFactory.installDefaultLookAndFeelAndExtension();
//LookAndFeelFactory.installJideExtension(LookAndFeelFactory.ECLIPSE3X_STYLE);
//LookAndFeelFactory.installJideExtension(LookAndFeelFactory.XERTO_STYLE);
//LookAndFeelFactory.installJideExtension(LookAndFeelFactory.OFFICE2003_STYLE);
JideTableExample frame = new JideTableExample();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
class StyleTableTableModel extends AbstractStyleTableModel {
/**
*
*/
private static final long serialVersionUID = 5969297678460142483L;
protected final Color BACKGROUND1 = new Color(253, 253, 244);
protected final Color BACKGROUND2 = new Color(150, 230, 255);
protected final Color BACKGROUND3 = new Color(210, 255, 150);
public int getRowCount() {
return 5;
}
public int getColumnCount() {
return 5;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return "" + rowIndex + "," + columnIndex;
}
GradientCellStyle _cellStyle = new GradientCellStyle();
private int _pattern = 0;
@Override
public CellStyle getCellStyleAt(int row, int column) {
_cellStyle.setHorizontalAlignment(SwingConstants.CENTER);
_cellStyle.setIcon(null);
if (_pattern == 0) {
if (row % 2 == 0) {
_cellStyle.setStartColor(BACKGROUND1);
_cellStyle.setEndColor(BACKGROUND2);
}
else {
_cellStyle.setStartColor(Color.pink);
_cellStyle.setEndColor(Color.pink);
}
}
else if (_pattern == 1) {
if (row % 3 == 0) {
_cellStyle.setStartColor(BACKGROUND1);
_cellStyle.setEndColor(BACKGROUND2);
}
else if (row % 3 == 1) {
_cellStyle.setStartColor(BACKGROUND2);
_cellStyle.setEndColor(BACKGROUND3);
}
else {
_cellStyle.setStartColor(null);
_cellStyle.setEndColor(null);
}
}
else if (_pattern == 2) {
if (column % 2 == 0) {
_cellStyle.setStartColor(BACKGROUND1);
_cellStyle.setEndColor(BACKGROUND2);
_cellStyle.setVertical(false);
}
else {
_cellStyle.setStartColor(null);
_cellStyle.setEndColor(null);
_cellStyle.setVertical(true);
}
}
else {
if (row % 2 == column % 2) {
_cellStyle.setStartColor(BACKGROUND1);
_cellStyle.setEndColor(BACKGROUND2);
}
else {
_cellStyle.setStartColor(null);
_cellStyle.setEndColor(null);
}
}
return _cellStyle;
}
@Override
public boolean isCellStyleOn() {
return _pattern != 4;
}
}
}