Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih

[es] :: Java :: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih

[ Pregleda: 454 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ha-Nocri

Član broj: 45144
Poruke: 41
77.46.178.*



Profil

icon Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih30.04.2008. u 21:03

Znaci, prepisao sam prepareRednderer() metod klase JTable da bi obojio samo neke redove i to izgleda ovako:

Code:
JTable table = new JTable() {
            public Component prepareRenderer(TableCellRenderer renderer,
                    int rowIndex, int colIndex) {
                JComponent c = (JComponent)super.prepareRenderer(renderer, rowIndex, colIndex);
                if( kolicina == -1 )
                    c.setBackground( new Color(253, 233, 227) );
                return c;
            } }


Sta ja radim sa tom Tabelom: izbacim sve redove koji ne zadovoljavaju odredjeni logicki uslov, na to dodam neke nove redove koji imaju specificnu vrednost(-1) atributa "kolicina". Te redove sa kolicinom == -1 bojim u boju koju vidite u kodu, svetlo pink. Sve to radi sjajno. Medjutim dalje se vracam na prvobitno stanje tabele, znaci pre bilo kakvog izbacivanja ili dodavanja redova gde kolicine nigde nisu -1, i svi redovi bivaju obojeni u tu pink boju iako ne zadovoljavaju uslov da je kolicina == -1.

Da li neko mozda zna u cemu problem moze biti?

Hvala unapred
H
30.04.2008. u 21:03 

bgd2500

Član broj: 55912
Poruke: 145
*.adsl-a-1.sezampro.yu.



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih01.05.2008. u 19:16
Proveri koju vrednost ima kolicina u pepareRenderer metodi. Dodaj else granu za slucaj kad kolicina nije -1 pa setuj pozadinu na belo/sivo ili koju vec hoces boju.
01.05.2008. u 19:16 

Ha-Nocri

Član broj: 45144
Poruke: 41
77.46.207.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih01.05.2008. u 23:25
Da da, to radi. Hvala. Ali nastaje novi problem koji sam ranije vec sretao i nisam znao da ga resim. Boja selekcije( JTable.setSelectionBackground() ) ne postoji. Nadam se da razumete. Kada selekrujem(kliknem na) neki red on je selektovan, ali boja se ne menja. Da li mozda da postavim novu temu za ovaj problem?

Inache, kod za prethodni deobi izgledao:

Code:
JTable table = new JTable() {
            public Component prepareRenderer(TableCellRenderer renderer,
                    int rowIndex, int colIndex) {
                JComponent c = (JComponent)super.prepareRenderer(renderer, rowIndex, colIndex);
                if( kolicina == -1 )
                    c.setBackground( new Color(253, 233, 227) );
        else c.setBackground(mTable.getBackground());
                return c;
            } 
};
01.05.2008. u 23:25 

Toxter
NS

Član broj: 39393
Poruke: 246
*.dialup.neobee.net.



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih02.05.2008. u 22:38
Treba ti custom CellEditor. Znaci klasa koja implementira TableCellEditor interfejs (ili prosiruje DefaultCellEditor klasu).

Pozdrav.

Sad mu nije nista, ubio si ga k'o zeca...
02.05.2008. u 22:38 

Ha-Nocri

Član broj: 45144
Poruke: 41
79.101.143.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih04.05.2008. u 22:18
Izvini, mozes li da budes precizniji? Zasto bi pravio svoj cellEditor za selektovanje redova da radi, ne kontam?
04.05.2008. u 22:18 

Toxter
NS

Član broj: 39393
Poruke: 246
...vl-edge-dnevnik.neobee.net.



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 07:56
Citat:
Ha-Nocri: Izvini, mozes li da budes precizniji? Zasto bi pravio svoj cellEditor za selektovanje redova da radi, ne kontam?


Tacno, ne moras. Ja imam neki slozeniji projekat pa sam pravio custom celleditor i tu sam definisao pozadinu selekcije.
U tvom slucaju ti mozes da napravis samo custom TableCellRenderer.

Pozdrav
Sad mu nije nista, ubio si ga k'o zeca...
05.05.2008. u 07:56 

Ha-Nocri

Član broj: 45144
Poruke: 41
79.101.207.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 12:29
Imam vec moj cellRenderer. Here it is:

Code:
class IconedTableCellRenderer extends DefaultTableCellRenderer {
    public void setValue(Object value) {
        if (value instanceof IconData) {
            IconData ivalue = (IconData)value;
            setIcon(ivalue.mIcon);
            setText(ivalue.mData.toString());
            setIconTextGap(10);
        }
        else super.setValue(value);
    }
}


U ovom primeru renderer je JLabel sa iconom i textom cisto radi razjasnjenja ako nekog zanima. IconData je moja cusstom clasa.

U kojoj metodi da definishem boju selekcije?
05.05.2008. u 12:29 

Toxter
NS

Član broj: 39393
Poruke: 246
...vl-edge-dnevnik.neobee.net.



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 12:42
U ovoj:
http://java.sun.com/j2se/1.4.2...ml#getTableCellEditorComponent(javax.swing.JTable,%20java.lang.Object,%20boolean,%20int,%20int)

ako je isSelected == true

tada vratis recimo JTextField kome setujes background.

Pozdrav
Sad mu nije nista, ubio si ga k'o zeca...
05.05.2008. u 12:42 

Ha-Nocri

Član broj: 45144
Poruke: 41
79.101.143.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 15:19
Da, da. Ovo sam trebao da znam:

Code:
class IconedTableCellRenderer extends DefaultTableCellRenderer {
    public void setValue(Object value) {
        if (value instanceof IconData) {
            IconData ivalue = (IconData)value;
            setIcon(ivalue.mIcon);
            setText(ivalue.mData.toString());
            setIconTextGap(10);
        }
        else super.setValue(value);
    }

    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);

        if(isSelected) c.setBackground(table.getSelectionBackground());
        else if(row%2 == 0) c.setBackground( new Color(240, 240, 240) );
        else c.setBackground(table.getBackground());
        return c;
    }
}


Kao sto vidis obojio sam svaki drugi red i selekcija radi. Savrseno.Veliko hvala :-)
05.05.2008. u 15:19 

Ha-Nocri

Član broj: 45144
Poruke: 41
79.101.143.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 15:49
Posto si pomenuo custom editor ima jedno pitanje uvezi editovanja celija, a da ne bih otvarao novu temu pitacu ovde.

Kako da znam kada se neka celija edituje? Na primer da postoji metoda izgledala bi nesto kao: cell.isBeingEdited() ili slicno.
U metodi getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) argument hasFocus je nesto drugo.

Ovo pitam zato sto bi voleo da vezem JPopupMenu sa celijom koja se edituje zbog "Copy", "Paste" i "Cut" opcija.
Nadam se da ste razumeli pitanje.

Hvala unapred
H
05.05.2008. u 15:49 

Ha-Nocri

Član broj: 45144
Poruke: 41
79.101.143.*



Profil

icon Re: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih05.05.2008. u 21:55
Uradio, sam XD

Ako nekog zanima resenje nek kaze i postovacu ga...
05.05.2008. u 21:55 

[es] :: Java :: Svi redovi JTable-a bivaju obojeni umesto samo nekih odredjenih

[ Pregleda: 454 | Odgovora: 10 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.