Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Cambiare colore di background a celle di una JTable

    Salve a tutti,
    sono alle prese con un progettino in cui utilizzo una matrice di interi random, che voglio visualizzare in una JTable. Posto qui sotto il codice relativo alla tabella.

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.table.AbstractTableModel;
    import java.util.*;
    
    class SwingDemo implements ActionListener {
        JButton jbtn;
        JTextField jfl,jfl2;
        JLabel jlb1,jlb2;
        int fer[][]=new int[10][10];
        MyTableModel dataModel;
        JTable t;
        Random generator = new Random();
        //RenderTableBody rtb = new RenderTableBody();
        public class MyTableModel extends AbstractTableModel{
            public int getColumnCount() { return 10; }
            public int getRowCount() { return 10;}
            public Object getValueAt(int row, int col){
                return new Integer(fer[row][col]);
            }
            public String getColumnName(int col) {
                return Integer.toString(col+1);
            }
            public boolean isCellEditable(int row, int col){
                return false;
            }
        }
        SwingDemo(){
            for(int i=0;i<10;i++){
                for(int j=0;j<10;j++){
                    fer[i][j]=generator.nextInt(10)+1;
                }
            }
            dataModel = new MyTableModel();
            t = new JTable(dataModel);
            JFrame jfrm = new JFrame("Finestra principale");
            jfrm.setLayout(new FlowLayout());
            jfrm.setSize(800,500);
            jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jfrm.add(t);
            jfrm.setVisible(true);
            for(int i=0;i<10;i++)
                t.getColumnModel().getColumn(i).setPreferredWidth(45);
            t.setRowHeight(45);
        }
        public static void main(String args[]){
            SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    new SwingDemo();
                }
            });
        }
    }
    Mi piacerebbe settare il colore di ogni cella con un colore diverso in base all'intero da visualizzare. Solamente che non trovo il metodo giusto per cambiare il background ad una singola cella.
    Il passo successivo sarebbe assegnare ad ogni intero una diversa tonalità di rosso, dove, piu' è grande l'intero, piu' il colore sarà acceso.
    Grazie in anticipo.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi usare un Renderer e assegnarlo a tutte le colonne della JTable.
    Segui il tutorial sui Renderer per le JTable.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    credo che tu debba ridefinire il CellRender

  4. #4
    Sebbene non abbia capito il concetto grazie agli esempi proposti sono riuscito nel mio intento.. Speriamo di capire come funziona questo render mano a mano... Grazie a tutti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.