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

Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost

[es] :: Java :: Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost

[ Pregleda: 1547 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Jovana_87_Bg
Jovana Nikolic
Student

Član broj: 295039
Poruke: 53
*.dynamic.isp.telekom.rs.



Profil

icon Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost12.12.2011. u 13:27 - pre 150 meseci
Pokusala sam da napisem program koji ce obojiti redove u zavisnosti od toga da li je iznos veci ili manji od 0. Imam clasu RenderRedGreen u kojoj mi ne prkazuje greske, medjutim nisam sigurna kako da tu klasu ocitam u klasu tabela (klasa tabela sadrzi tabelu jTabelaPlate).

Tabela jTabelaPlate:
Plata Iznos
Jovana 200
Boban -100

Code:

package red;
import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;

final class RenderRedGreen extends DefaultTableCellRenderer {
  
  RenderRedGreen () {
    setHorizontalAlignment(SwingConstants.RIGHT);   
  }
  
  public Component getTableCellRendererComponent(
    JTable aTable, 
    Object aNumberValue, 
    boolean aIsSelected, 
    boolean aHasFocus, 
    int aRow, int aColumn
  ) {  
   
    if (aNumberValue == null) return this;
    Component renderer = super.getTableCellRendererComponent(
      aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
    );
    Number value = (Number)aNumberValue;
    if ( value.doubleValue() < 0 ) {
      renderer.setForeground(Color.red);
    }
    else {
      renderer.setForeground(fDarkGreen);
    }
    return this;
  }
  private Color fDarkGreen = Color.green.darker();



Code:

public class Tabela extends javax.swing.JFrame {

  
    public Tabela() {
        initComponents();
         RenderRedGreen r=new RenderRedGreen();
         r.getTableCellRendererComponent(jTabelaPlate, args, true, true, ERROR, WIDTH); //ovaj deo koda ne znam da prilagodim

    } 

 public static void main(String args[]) {
        
        
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Tabela().setVisible(true);
            }
        });
    }
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost13.12.2011. u 22:19 - pre 150 meseci
Ako vec imas gotov cellRenderer, sve sto treba da uradis je da ga setujes na zeljenu kolonu u tabeli.
Ako ti je tabela jTabelaPlate to bi recimo izgledalo:
Code (java):

jTabelaPlate.getColumnModel().getColumn(0).setCellRenderer(new RenderRedGreen()); //prva kolona
jTabelaPlate.getColumnModel().getColumn(1).setCellRenderer(new RenderRedGreen()); //druga kolona
...
 

xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Jovana_87_Bg
Jovana Nikolic
Student

Član broj: 295039
Poruke: 53
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost14.12.2011. u 12:29 - pre 150 meseci
Uradila sam setovanje kolone, medjutim kada pokrenem program brojeve oboji tek onda kada selektujem odredjeni red, a ja bih zelela da on automatski oboji sve redove. Ne znam kako da resim taj problem i da li se on javlja zbog boolean aIsSelected?
 
Odgovor na temu

retry
Beograd

Član broj: 39405
Poruke: 95
*.adsl.verat.net.



Profil

icon Re: Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost14.12.2011. u 18:33 - pre 150 meseci
mozda bi ti odgovaralo da to uradis a da ne pravis svoj Renderer. pogledaj metodu prepareRenderer(TableCellRenderer renderer, int row, int column) iz JTable. evo kako:
Code:

public class Start {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MojFrame().setVisible(true);
            }
        });
    }

}

Code:

public class MojFrame extends JFrame {
    private static final long serialVersionUID = 1L;
    
    private JTable table;
    
    public MojFrame() {
        super();
        
        setTitle("Redovi u boji");
        setSize(new Dimension(600, 300));
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        
        getContentPane().add(getTable(), BorderLayout.CENTER);
    }

    private JTable getTable() {
        if (table == null) {
            
            Object[] columnNames = {"Ime", "Prezime", "Broj", "Boolean"};
            Object[][] rowData =
            {
                {"Jovana", "Jovanovic", new Integer(1000), Boolean.TRUE},
                {"Boban", "Bobic", new Integer(-2000), Boolean.FALSE},
                {"Marko", "Markovic", new Integer(3000), Boolean.TRUE},
                {"Nekoime", "Nekoprezime", new Integer(-4000), Boolean.FALSE},
                {"Milan", "Milanovic", new Integer(5000), Boolean.TRUE}
            };
            
            DefaultTableModel model = new DefaultTableModel(rowData, columnNames) {
                public Class getColumnClass(int column) {
                    return getValueAt(0, column).getClass();
                }
            };
            
            table = new JTable(model) {

                public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                    
                    Component c = super.prepareRenderer(renderer, row, column);

                    if (!isRowSelected(row)) {
                        Integer vrednost = (Integer)getValueAt(row, 2);
                        if (vrednost < 0) c.setBackground(Color.RED);
                        else c.setBackground(Color.GREEN);
                    }

                    return c;
                }
            };
        }
        return table;
    }

}

 
Odgovor na temu

[es] :: Java :: Problem kod odredjivanja boje reda u tabeli u odnosu na vrednost

[ Pregleda: 1547 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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