Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.608 pregleda

Najnovija ↓

JTable bojenje reda... 07.10.2006. u 22:48 · pre 244 meseca #1
Pozdrav svima!

Imam problem na koji sam potrosio vec poprilicno dobar deo vremena, a nikako da ga resim. Naime, trebalo bi mi da na osnovu nekog uslova, obojim jedan (ili vise) reda u tabeli (JTable).

Ovo je parce koda koje oboji jednu kolonu, a meni treba da obojim jednu vrstu. Ako neko ima resenje ili koristan link, bio bih jako zahvalan.

import java.awt.Color;
import java.awt.Component;

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

public class ColouredCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1;

private Color color;


public ColouredCellRenderer(Color color) {
this.color = color;
}

public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);

if (value.toString().compareTo("") == 0) {
cell.setBackground(color);
} else {
cell.setBackground(Color.WHITE);
}

return cell;
}

}
}
Re: JTable bojenje reda... 08.10.2006. u 20:00 · pre 244 meseca #2
Recimo da zelis da bojis u crveno.
Kao prvo treba ti custom TableModel (recimo nek se zove MyTableModel)
koji ce imati metodu koja ciji ce potpis recimo biti:
Code:
public boolean isCellRed(int row, int col);


Zatim treba ti custom JTable pa ces override-ovati metodu:
Code:
public Component prepareRenderer(TableCellRenderer renderer,
                                     int row,
                                     int column)


U ovoj gore metodi pozoves:
Code:
if(this.getModel() instanceof MyTableModel && ((MyTableModel)this.getModel()).isCellRed(row,column) ){
            super.prepareRenderer(redRenderer, row, column);
            return (Component)redRenderer;
}else{
            super.prepareRenderer(whiteRenderer, row, column);
            return (Component)whiteRenderer;
}


a redRenderer je definisan kao:

Code:
DefaultTableCellRenderer redRenderer = new DefaultTableCellRenderer(){
            public void setValue(Object aValue) {
                this.setBackground(Color.RED);                             
                super.setValue(aValue);
            }
        };


whiteRenderer: umesto Color.RED -> Color.WHITE

Pozdrav!
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: JTable bojenje reda... 08.10.2006. u 21:58 · pre 244 meseca #3
Toxter, hvala ti puno. To je upravo ono sto mi je trebalo.

Pozdrav.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme