How to color a cell in a JTable

Discussion in 'Java' started by clusardi2k, Jul 28, 2012.

  1. clusardi2k

    clusardi2k Guest

    From: "clusardi2k" <clusardi2k@1:261/38.remove-nwi-this>

    From: "clusardi2k" <clusardi2k@1:261/38.remove-10ae-this>

    From:

    How would you use the idea in PROJECT 1 to color a cell in the PROJECT 2.

    References:
    (1) http://tips4java.wordpress.com/2010/01/24/table-row-rendering/

    (2) http://www.java-tips.org/java-se-tips/javax.swing/sorting-and-filtering
    -tables.html

    Thank you,

    //-------------- PROJECT 1 ---------------------
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javaapplication1;

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.border.*;

    public class TableRowRenderingTip extends JPanel {
    public TableRowRenderingTip()
    {
    Object[] columnNames = {"Type", "Company", "Shares", "Price",
    "Boolean"};
    Object[][] data =
    {
    {"Buy", "IBM", new Integer(1000), new Double(80.5),
    Boolean.TRUE},
    {"Sell", "Dell", new Integer(2000), new Double(6.25),
    Boolean.FALSE},
    {"Short Sell", "Apple", new Integer(3000), new
    Double(7.35), Boolean.TRUE},
    {"Buy", "MicroSoft", new Integer(4000), new
    Double(27.50), Boolean.FALSE},
    {"Short Sell", "Cisco", new Integer(5000), new
    Double(20), Boolean.TRUE}
    };

    DefaultTableModel model = new DefaultTableModel(data,
    columnNames)
    {
    public Class getColumnClass(int column)
    {
    return getValueAt(0, column).getClass();
    }
    };

    JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.addTab("Data", createData(model));
    add( tabbedPane );
    }

    private JComponent createData(DefaultTableModel model)
    {
    JTable table = new JTable( model )
    {
    public Component prepareRenderer(TableCellRenderer
    renderer, int row, int column)
    {
    Component c = super.prepareRenderer(renderer,
    row, column);

    // Color row based on a cell value

    if (!isRowSelected(row))
    {
    c.setBackground(getBackground());
    int modelRow =
    convertRowIndexToModel(row);
    String type =
    (String)getModel().getValueAt(modelRow, 0);
    if ("Buy".equals(type))
    c.setBackground(Color.GREEN);
    if ("Sell".equals(type))
    c.setBackground(Color.YELLOW);
    }

    return c;
    }
    };

    table.setPreferredScrollableViewportSize(table.getPreferredSize
    ());
    table.changeSelection(0, 0, false, false);
    table.setAutoCreateRowSorter(true);
    return new JScrollPane( table );
    }

    public static void main(String[] args)
    {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    }
    });
    }

    public static void createAndShowGUI()
    {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("Table Row Rendering");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add( new TableRowRenderingTip() );
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    }
    }



    //-------------- PROJECT 2 ---------------------
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javaapplication2;

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel; import
    javax.swing.table.TableModel; import javax.swing.table.TableRowSorter;

    public class testtable extends javax.swing.JFrame {

    /**
    * Creates new form testtable
    */
    public testtable() {
    initComponents();

    Runnable runner = new Runnable() {
    public void run() {

    Object rows[][] = {
    {"AMZN", "Amazon", 41.28},
    {"EBAY", "eBay", 41.57},
    {"GOOG", "Google", 388.33},
    {"MSFT", "Microsoft", 26.56},
    {"NOK", "Nokia Corp", 17.13},
    {"ORCL", "Oracle Corp.", 12.52},
    {"SUNW", "Sun Microsystems", 3.86},
    {"TWX", "Time Warner", 17.66},
    {"VOD", "Vodafone Group", 26.02},
    {"YHOO", "Yahoo!", 37.69}
    };
    String columns[] = {"Symbol", "Name", "Price"};
    TableModel model =
    new DefaultTableModel(rows, columns) {
    public Class getColumnClass(int column) {
    Class returnValue;
    if ((column >= 0) && (column < getColumnCount())) {
    returnValue = getValueAt(0, column).getClass();
    } else {
    returnValue = Object.class;
    }
    return returnValue;
    }
    };

    RowSorter<TableModel> sorter =
    new TableRowSorter<TableModel>(model);
    jTable1.setModel(model);
    jTable1.setRowSorter(sorter);
    }
    };
    EventQueue.invokeLater(runner);
    }
    /**
    * This method is called from within the constructor to initialize the
    form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null}
    },
    new String [] {
    "Title 1", "Title 2", "Title 3", "Title 4"
    }
    ));
    jScrollPane1.setViewportView(jTable1);

    javax.swing.GroupLayout layout = new
    javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
    G)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 375,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(13, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
    G)
    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
    layout.createSequentialGroup()
    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
    Short.MAX_VALUE)
    .addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 275,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap())
    );

    pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
    /*
    * Set the Nimbus look and feel
    */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting
    code (optional) ">
    /*
    * If Nimbus (introduced in Java SE 6) is not available, stay with the
    * default look and feel. For details see
    * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.
    html
    */
    try {
    for (javax.swing.UIManager.LookAndFeelInfo info :
    javax.swing.UIManager.getInstalledLookAndFeels()) {
    if ("Nimbus".equals(info.getName())) {
    javax.swing.UIManager.setLookAndFeel(info.getClassName());
    break;
    }
    }
    } catch (ClassNotFoundException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
    * Create and display the form
    */
    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {
    new testtable().setVisible(true);
    }
    });
    }
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration
    }

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
    clusardi2k, Jul 28, 2012
    #1
    1. Advertising

  2. clusardi2k

    clusardi2k Guest

    To: clusardi2k
    From: "clusardi2k" <clusardi2k@1:261/38.remove-nwi-this>

    To: clusardi2k
    From: "clusardi2k" <clusardi2k@1:261/38.remove-10ae-this>

    To: clusardi2k
    From:

    The below project will paint all cells red!

    //-------------- PROJECT 2 ---------------------
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package javaapplication2;

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel; import
    javax.swing.table.TableModel; import javax.swing.table.TableRowSorter;

    class CustomRenderer extends DefaultTableCellRenderer {
    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.setBackground(new java.awt.Color(255, 72, 72));
    return c;
    }
    }

    public class testtable extends javax.swing.JFrame {

    /**
    * Creates new form testtable
    */
    public testtable() {
    initComponents();

    Runnable runner = new Runnable() {
    public void run() {

    Object rows[][] = {
    {"AMZN", "Amazon", 41.28},
    {"EBAY", "eBay", 41.57},
    {"GOOG", "Google", 388.33},
    {"MSFT", "Microsoft", 26.56},
    {"NOK", "Nokia Corp", 17.13},
    {"ORCL", "Oracle Corp.", 12.52},
    {"SUNW", "Sun Microsystems", 3.86},
    {"TWX", "Time Warner", 17.66},
    {"VOD", "Vodafone Group", 26.02},
    {"YHOO", "Yahoo!", 37.69}
    };
    String columns[] = {"Symbol", "Name", "Price"};
    TableModel model =
    new DefaultTableModel(rows, columns) {
    public Class getColumnClass(int column) {
    Class returnValue;
    if ((column >= 0) && (column < getColumnCount())) {
    returnValue = getValueAt(0, column).getClass();
    } else {
    returnValue = Object.class;
    }
    return returnValue;
    }
    };

    jTable1.setDefaultRenderer(String.class, new CustomRenderer());

    jTable1.setModel(model);

    jTable1.setRowSorter(sorter); }
    };
    EventQueue.invokeLater(runner);
    }
    /**
    * This method is called from within the constructor to initialize the
    form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTable1 = new javax.swing.JTable();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null}
    },
    new String [] {
    "Title 1", "Title 2", "Title 3", "Title 4"
    }
    ));
    jScrollPane1.setViewportView(jTable1);

    javax.swing.GroupLayout layout = new
    javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
    G)
    .addGroup(layout.createSequentialGroup()
    .addContainerGap()
    .addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 375,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap(13, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
    G)
    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
    layout.createSequentialGroup()
    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
    Short.MAX_VALUE)
    .addComponent(jScrollPane1,
    javax.swing.GroupLayout.PREFERRED_SIZE, 275,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addContainerGap())
    );

    pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
    /*
    * Set the Nimbus look and feel
    */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting
    code (optional) ">
    /*
    * If Nimbus (introduced in Java SE 6) is not available, stay with the
    * default look and feel. For details see
    * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.
    html
    */
    try {
    for (javax.swing.UIManager.LookAndFeelInfo info :
    javax.swing.UIManager.getInstalledLookAndFeels()) {
    if ("Nimbus".equals(info.getName())) {
    javax.swing.UIManager.setLookAndFeel(info.getClassName());
    break;
    }
    }
    } catch (ClassNotFoundException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
    java.util.logging.Logger.getLogger(testtable.class.getName()).log(j
    ava.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
    * Create and display the form
    */
    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {
    new testtable().setVisible(true);
    }
    });
    }
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration
    }

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
    clusardi2k, Jul 28, 2012
    #2
    1. Advertising

  3. clusardi2k

    markspace Guest

    To: clusardi2k
    From: "markspace" <markspace@1:261/38.remove-5ky-this>

    To: clusardi2k
    From: "markspace" <markspace@1:261/38.remove-z1h-this>

    To: clusardi2k
    From: markspace <-@.>

    On 7/27/2012 10:07 AM, wrote:
    > How would you use the idea in PROJECT 1 to color a cell in the PROJECT 2.



    Do your own homework.

    Seriously; asking us stuff like this is just rude.

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
    markspace, Jul 29, 2012
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Tivo Escobar
    Replies:
    1
    Views:
    7,316
    manusa
    Apr 12, 2007
  2. news.rcn.com
    Replies:
    1
    Views:
    9,664
    Chris Smith
    Jul 12, 2004
  3. Replies:
    2
    Views:
    12,034
    IchBin
    Mar 28, 2006
  4. Hal Vaughan
    Replies:
    5
    Views:
    29,803
  5. Replies:
    2
    Views:
    206
    markspace
    Jul 27, 2012
Loading...

Share This Page