🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #1028

Jtable poner color a una celda por defecto II

#1028
From: Pedro
Date: Wed, 27 Sep 2006 16:00
324 lines
14147 bytes
Hola,

Con el post anterior al final he decidido hacer un cambio y es que en 
vez de colorear la fila coloreo la celda.

Posteo parte del c�digo a ver que os parece y + adelante os comento el 
error que me da.

En la clase interfaz

private final ColoresDirecciones coloresFilas = new ColoresDirecciones();


public class ColoresDirecciones implements TableCellRenderer
{
     public Component getTableCellRendererComponent(JTable table, Object 
value,
             boolean isSelected, boolean hasFocus, int row, int column)
     {
         Component renderer = 
DEFAULT_RENDERER.getTableCellRendererComponent(
                 table, value, isSelected, hasFocus, row, column);



         if (isSelected)
         {
                 /* Para celdas seleccionadas:
                 seg�n el valor de 'value', pones el color, el tipo de 
                  		letra,
                 el formato, o incluso el tooltip.
                  */

             if 
(!value.toString().equalsIgnoreCase(filaColumnaColor.toString()))
             {
                 renderer.setBackground(table.getSelectionBackground());
                 renderer.setForeground(table.getSelectionForeground());
             }
             else
             {
                 renderer.setBackground(c);
                 renderer.setForeground(table.getSelectionForeground());
             }
         }
         else
         {
                 /* Para celdas no seleccionadas:
                 seg�n el valor de 'value', pones el color, el tipo de 
letra,
                 el formato, o incluso el tooltip.
                  */

             if 
(value.toString().equalsIgnoreCase(filaColumnaColor.toString()))
             {
                 renderer.setBackground(c);
                 renderer.setForeground(Color.LIGHT_GRAY);
             }
             else
             {
                 renderer.setForeground(Color.BLACK);
                 renderer.setBackground(Color.WHITE);
             }
         }
         return renderer;
     }

     /**
      * Establece el c�digo de direcci�n o facturaci�n por defecto a 
colorear
      *
      * @param filaColumnaColor Texto descriptivo del c�digo por defecto
      */
     public void setFilaColumnaColor(String filaColumnaColor)
     {
         this.filaColumnaColor.delete(0, this.filaColumnaColor.length());
         this.filaColumnaColor.append(filaColumnaColor);
         this.filaColumnaColor.trimToSize();

     }



     /**
      * Almacena el c�digo de direcci�n o facturaci�n por defecto para 
colorear
      */
     private StringBuilder filaColumnaColor = new StringBuilder();

     private Color c = new Color(0,102,102);

     public DefaultTableCellRenderer DEFAULT_RENDERER = new 
DefaultTableCellRenderer();


}

ok

desde la clase en el que tengo el JTable que se llama Interfaz

en el constructor

jTableDirecciones.setDefaultRenderer(Object.class, coloresFilas);

y desde un m�todo

1� cogo de otra tabla el c�gigo de direcciones por defecto

cliente.setRsocdirFac((String) 
jTableClientes.getValueAt(jTableClientes.getSelectedRow(), 4));
         cliente.setDireccionFacturacion( (String) 
jTableClientes.getValueAt(jTableClientes.getSelectedRow(), 8) );

2� miro si esta seleccionado el jToggle ya que si esta muestro la tabla 
con
todas las direcciones del cliente

         if ( jToggleButtonDirFac.isSelected() )
         {
             if( cliente.getNumeroDirecciones() > 1 ) //este if sobra xq 
ya se por otro lado el numero de direcciones pero bueno :)
             {
                 try
                 {
//                    B�squeda de direcciones por nif
 
modeloDirecciones.buscarDirecciones((String)jTableClientes.getValueAt(jTableClientes.getSelectedRow(), 
1),
                             modoConexion);
                     initColumnSizes(jTableDirecciones);
                     jTableDirecciones.setRowSelectionInterval(0,0);
                     jDialogDirecciones.setTitle(TPV + "-Direcciones 
facturaci�n cliente");
//                    lololo
                     jDialogDirecciones.setName("Factura");




//aqui le paso el c�digo de la direcci�n para que me colorea la celda

   coloresFilas.setFilaColumnaColor(cliente.getRsocdirFac());


                     jDialogDirecciones.setVisible(true);

                 }



bueno hasta aqui de puta madre funciona todo correctamente

pero claro ....   algo ten�a que fallar

y es que si el cliente tiene 3 direccioens no hay problema pero hay 
clientes que tienen 100 direcc. por ejemplo

mi asombro es que en cuanto empiezo a mover el JScrollPane para arriba y
para abajo no me hace el refresco correctamente se queda la aplicaci�n 
medio pillada y me larga esto que os pongo

Si has llegado hasta aqu� 1000 gracias, bueno te pongo el error.

  la l�nea que me marca del error es esta :

if (value.toString().equalsIgnoreCase(filaColumnaColor.toString())) de 
la clase ColoresDirecciones


Exception occurred during event dispatching:
java.lang.NullPointerException
         at 
es.titania.tpv.ColoresDirecciones.getTableCellRendererComponent(ColoresDirecciones.java:70)
         at javax.swing.JTable.prepareRenderer(JTable.java:3928)
         at 
javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2072)
         at 
javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974)
         at 
javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1897)
         at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
         at javax.swing.JComponent.paintComponent(JComponent.java:742)
         at javax.swing.JComponent.paint(JComponent.java:1005)
         at 
javax.swing.JViewport.paintViewDoubleBuffered(JViewport.java:1670)
         at javax.swing.JViewport.paintView(JViewport.java:1646)
         at javax.swing.JViewport.windowBlitPaint(JViewport.java:1541)
         at javax.swing.JViewport.setViewPosition(JViewport.java:1098)
         at 
javax.swing.plaf.basic.BasicScrollPaneUI$Handler.vsbStateChanged(BasicScrollPaneUI.java:818)
         at 
javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:807)
         at 
javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:348)
         at 
javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:285)
         at 
javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:151)
         at javax.swing.JScrollBar.setValue(JScrollBar.java:441)
         at 
javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(BasicScrollBarUI.java:1143)
         at 
javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(BasicScrollBarUI.java:1080)
         at java.awt.Component.processMouseMotionEvent(Component.java:5536)
         at 
javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3144)
         at java.awt.Component.processEvent(Component.java:5257)
         at java.awt.Container.processEvent(Container.java:1966)
         at java.awt.Component.dispatchEventImpl(Component.java:3955)
         at java.awt.Container.dispatchEventImpl(Container.java:2024)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at 
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
         at 
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3909)
         at 
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
         at java.awt.Container.dispatchEventImpl(Container.java:2010)
         at java.awt.Window.dispatchEventImpl(Window.java:1778)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
         at 
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
         at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
         at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
         at java.awt.Dialog$1.run(Dialog.java:517)
         at java.awt.Dialog$2.run(Dialog.java:545)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.awt.Dialog.show(Dialog.java:543)
         at java.awt.Component.show(Component.java:1300)
         at java.awt.Component.setVisible(Component.java:1253)
         at 
es.titania.tpv.Interfaz.jButtonClientesAceptarActionPerformed(Interfaz.java:6030)
         at es.titania.tpv.Interfaz.access$8900(Interfaz.java:71)
         at es.titania.tpv.Interfaz$22.actionPerformed(Interfaz.java:2493)
         at 
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
         at 
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
         at 
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
         at 
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
         at 
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
         at java.awt.Component.processMouseEvent(Component.java:5488)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
         at java.awt.Component.processEvent(Component.java:5253)
         at java.awt.Container.processEvent(Container.java:1966)
         at java.awt.Component.dispatchEventImpl(Component.java:3955)
         at java.awt.Container.dispatchEventImpl(Container.java:2024)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at 
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
         at 
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
         at 
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
         at java.awt.Container.dispatchEventImpl(Container.java:2010)
         at java.awt.Window.dispatchEventImpl(Window.java:1778)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
         at 
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
         at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
         at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)
         at java.awt.Dialog$1.run(Dialog.java:517)
         at java.awt.Dialog$2.run(Dialog.java:545)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.awt.Dialog.show(Dialog.java:543)
         at java.awt.Component.show(Component.java:1300)
         at java.awt.Component.setVisible(Component.java:1253)
         at es.titania.tpv.Interfaz.buscarClientes(Interfaz.java:1536)
         at es.titania.tpv.Interfaz.access$5000(Interfaz.java:71)
         at es.titania.tpv.Interfaz$9.actionPerformed(Interfaz.java:1368)
         at 
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
         at 
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
         at 
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
         at 
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
         at 
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
         at 
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
         at java.awt.Component.processMouseEvent(Component.java:5488)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
         at java.awt.Component.processEvent(Component.java:5253)
         at java.awt.Container.processEvent(Container.java:1966)
         at java.awt.Component.dispatchEventImpl(Component.java:3955)
         at java.awt.Container.dispatchEventImpl(Container.java:2024)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at 
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
         at 
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
         at 
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
         at java.awt.Container.dispatchEventImpl(Container.java:2010)
         at java.awt.Window.dispatchEventImpl(Window.java:1778)
         at java.awt.Component.dispatchEvent(Component.java:3803)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
         at 
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
         at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
         at 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
         at 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


Bueno ya ta   acepto cualquier tipo de sugerencia o comentario..

Gracias y Saludos
Technical Details
Message-ID: <efe74l$r4o177@cesio.mundo-r.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news1.dtag.de!cesio.mundo-r.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 1116f3,2b1cdb8d26b7ef6f,start
X-Google-Attributes: gid1116f3,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news1.dtag.de!cesio.mundo-r.com!not-for-mail
From: Pedro <Pedro@ddd.com>
Newsgroups: es.comp.lenguajes.java
Subject: Jtable poner color a una celda por defecto II
Date: Wed, 27 Sep 2006 18:00:30 +0200
Organization: R Cable y Telecomunicaciones
Lines: 324
Message-ID: <efe74l$r4o177@cesio.mundo-r.com>
Reply-To: Pedro@ddd.com
NNTP-Posting-Host: cm115140.red83-165.mundo-r.com
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.12) Gecko/20050915
X-Accept-Language: es, es-es, en-us, en