Path: csiph.com!usenet.pasdenom.info!aioe.org!newsfeed.x-privat.org!news-out.readnews.com!transit4.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!53ab2750!not-for-mail From: "clusardi2k" Subject: How to color a cell in a JTable Message-ID: <50143775.55458.calajapr@time.synchro.net> X-Comment-To: All Newsgroups: comp.lang.java.programmer X-FTN-AREA: COMP.LANG.JAVA.PROGRAMMER X-FTN-MSGID: 1:261/38 945a0e2c Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.16a-Win32 NewsLink 1.98] Lines: 310 Date: Sat, 28 Jul 2012 20:40:18 GMT NNTP-Posting-Host: 69.21.70.65 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1343508018 69.21.70.65 (Sat, 28 Jul 2012 15:40:18 CDT) NNTP-Posting-Date: Sat, 28 Jul 2012 15:40:18 CDT Organization: tds.net Xref: csiph.com comp.lang.java.programmer:16490 From: "clusardi2k" From: "clusardi2k" From: "clusardi2k" From: clusardi2k@aol.com 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 sorter = new TableRowSorter(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") // 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(); }// /** * @param args the command line arguments */ public static void main(String args[]) { /* * Set the Nimbus look and feel */ // /* * 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); } // /* * 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 --- 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