Colorindo Tabela

Bom Pessoal a história é um seguinte estou desenvolvendo um componente novo, Chama _TblField com uma série de funções que agilizam a programação.

o que eu queria era desenvolver mais uma função que colorisse as células consgui um código que faz isso mas quando tentei implementar no meu componente nada acontesse.

código que achei:

[code]package calculadorajava;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

/**

  • @author Ronald Tetsuo Miura
    */
    public class Teste extends DefaultTableCellRenderer {

/** */
private Font fontePadrao = new Font("monospaced", Font.BOLD, 12);

/**

  • @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,

  • java.lang.Object, boolean, boolean, int, int)
    */
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
    Component c = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    c.setFont(this.fontePadrao);
    c.setForeground(Color.green);
    c.setBackground(Color.black);

     return c;   
    

    }

    /**

    • @param args
      */
      public static void main(String[] args) {
      Vector header = new Vector();
      header.add("Teste1");
      header.add("Teste2");
      header.add("Teste3");
      header.add("Teste4");

      Vector data = new Vector();
      for (int i = 0; i < 10; i++) {
      Vector row = new Vector();
      row.add("Teste1");
      row.add("Teste2");
      row.add("Teste3");
      row.add("Teste4");
      data.add(row);
      }
      JTable table = new JTable(new DefaultTableModel(data, header));
      table.setDefaultRenderer(Object.class, new Teste());

      JFrame frame = new JFrame();
      frame.getContentPane().add(table);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(640, 480);
      frame.setVisible(true);
      }
      }[/code]

meu componente "_TblField"

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package MM_Package;

/**
*

  • @author Michel
    */
    public class _TblField extends javax.swing.JTable {
    private String Caption;
    private Object[][] Dados;
    private String Tag;
    private String[] Titulos;
    private String[] WidthCols;
    public _TblField(){
    super();
    }
    public String GetCaption(){
    return Caption;
    }
    public Object[] GetDado(int iRow){
    int iInd = 0;
    Object[] sReturn = null;
    if (Dados.length>0 && Dados[0].length>0){
    for(iInd=0;iInd<=Dados.length-1;iInd++){
    if (iInd==iRow){
    sReturn = Dados[iInd];
    return sReturn;
    }
    }
    }
    return sReturn;
    }
    public Object[][] GetDados(){
    return Dados;
    }
    public Object[][] GetDados(int[] iRow){
    int iInd = 0;
    int iIndY = 0;
    int iCountLines = 0;
    Object[][] sRetorno = null;
    if (Dados.length>0 && Dados[0].length>0){
    Object[][] sMount = new Object[Dados.length][Dados[0].length];
    for(iInd=0;iInd<=Dados.length-1;iInd++){
    for(iIndY=0;iIndY<=iRow.length-1;iIndY++){
    if (iInd==iRow[iIndY]){
    sMount[iCountLines] = Dados[iInd];
    iCountLines=iCountLines+1;
    }
    }
    }
    sRetorno = new Object[iCountLines][Dados[0].length];
    for(iInd=0;iInd<=iCountLines-1;iInd++){
    sRetorno[iInd]=sMount[iInd];
    }
    }
    return sRetorno;
    }
    public boolean GetSizableStateCols(){
    return this.getTableHeader().getResizingAllowed();
    }
    public int GetRows(){
    return this.getRowCount();
    }
    public int GetSelectedRow(){
    return this.getSelectedRow();
    }
    public int[] GetSelectedsRows(){
    return this.getSelectedRows();
    }
    public String GetTag(){
    return Tag;
    }
    public String[] GetTitulos(){
    return Titulos;
    }
    public String[] GetWidthCols(){
    return WidthCols;
    }
    public void SetAddDados(String[] sDados){
    if (Dados[0].length == sDados.length){
    Object[][] sMount = new String[Dados.length + 1][Dados[0].length];
    int iMaxPriCasa = Dados.length - 1;
    int iMaxSegCasa = Dados[0].length - 1;
    int iIndX=0;
    int iIndY=0;
    for(iIndX=0;iIndX<=iMaxPriCasa;iIndX++){
    for(iIndY=0;iIndY<=iMaxSegCasa;iIndY++){
    sMount[iIndX][iIndY]=Dados[iIndX][iIndY];
    }
    }
    for(iIndY=0;iIndY<=iMaxSegCasa;iIndY++){
    sMount[sMount.length -1][iIndY]=sDados[iIndY];
    }
    Dados = sMount;
    javax.swing.table.DefaultTableModel DfModel = new javax.swing.table.DefaultTableModel(sMount, Titulos);
    this.setModel(DfModel);
    }
    }
    public void SetAlignment(int iCol, int iAlignment){
    javax.swing.table.DefaultTableCellRenderer r = new javax.swing.table.DefaultTableCellRenderer();
    switch(iAlignment){
    case 0:
    r.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    break;
    case 1:
    r.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    break;
    case 2:
    r.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    break;
    default:
    r.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
    }
    this.getColumnModel().getColumn(iCol).setCellRenderer®;
    }
    public void SetCaption(String sTexto){
    Caption = sTexto;
    }
    public void SetLista(String[] sTitulos, Object[][] sDados){
    Titulos = sTitulos;
    Dados = sDados;
    javax.swing.table.DefaultTableModel DfModel = new javax.swing.table.DefaultTableModel(sDados, sTitulos);
    this.setModel(DfModel);
    }
    public void SetRemoveRow(int iRow){
    if(iRow<=(Dados.length-1) && iRow>=0){
    Object[][] sMount = new String[Dados.length - 1][Dados[0].length];
    int iMaxPriCasa = Dados.length - 1;
    int iMaxSegCasa = Dados[0].length - 1;
    int iIndX=0;
    int iIndXAux=0;
    int iIndY=0;
    for(iIndX=0;iIndX<=iMaxPriCasa;iIndX++){
    if (iIndX==iRow){
    iIndXAux=iIndXAux - 1;
    }
    else{
    for(iIndY=0;iIndY<=iMaxSegCasa;iIndY++){
    sMount[iIndXAux][iIndY]=Dados[iIndX][iIndY];
    }
    }
    iIndXAux=iIndXAux + 1;
    }
    Dados = sMount;
    javax.swing.table.DefaultTableModel DfModel = new javax.swing.table.DefaultTableModel(sMount, Titulos);
    this.setModel(DfModel);
    }
    }
    public void SetSelectionByCell(){
    this.setCellSelectionEnabled(true);
    }
    public void SetSelectionByMultiRow(){
    this.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    }
    public void SetSelectionByUniqueRow(){
    this.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    }
    public void SetSizableStateCols(boolean bStado){
    this.getTableHeader().setResizingAllowed(bStado);
    }
    public void SetTag(String sTag){
    Tag = sTag;
    }
    public void SetTitulos(String[] sTitulos){
    if (Dados.length>0 && Dados[1].length>0){
    javax.swing.table.DefaultTableModel DfModel = new javax.swing.table.DefaultTableModel(Dados, sTitulos);
    this.setModel(DfModel);
    }
    }
    public void SetWidthCol(String[] sColumns){
    int iInd=0;
    for(iInd=0;iInd<=sColumns.length-1;iInd++){
    javax.swing.table.TableColumn column = this.getColumnModel().getColumn(iInd);
    column.setPreferredWidth(Integer.parseInt(sColumns[iInd]));
    }
    WidthCols=sColumns;
    }
    }
    [/code]

não sei mais o que fazer :thumbdown: alguém pode ajudar?

Você vai precisar definir o TableModel. Com o TableModel você define o ColumnModel. Com o ColumnModel você define o CellRenderer. E o CellRenderer faz a mágica que você quer.

Do jeito que o Victor falou é MUITO mais fácil e elegante.

Pode começar por aqui:
http://www.informit.com/articles/article.aspx?p=332278&rl=1