code: @Override
      public Component getTableCellRendererComponent(JTable table, Object value,
              boolean isSelected, boolean hasFocus, int row, int column) {
          // Save the supplied value to the time picker.
          setCellEditorValue(value);
          // Draw the appropriate background colors to indicate a selected or unselected state.
          if (isSelected) {
              if (matchTableSelectionBackgroundColor) {
                  timePicker.getComponentTimeTextField().setBackground(table.getSelectionBackground());
                  timePicker.setBackground(table.getSelectionBackground());
              } else {
                  timePicker.zDrawTextFieldIndicators();
              }
          }
          if (!isSelected) {
              if (matchTableBackgroundColor) {
                  timePicker.getComponentTimeTextField().setBackground(table.getBackground());
                  timePicker.setBackground(table.getBackground());
              } else {
                  timePicker.zDrawTextFieldIndicators();
              }
          }
          // Draw the appropriate borders to indicate a focused or unfocused state.
          if (hasFocus) {
              timePicker.setBorder(borderFocusedCell);
          } else {
              timePicker.setBorder(borderUnfocusedCell);
          }
          // If needed, adjust the minimum row height for the table.
          zAdjustTableRowHeightIfNeeded(table);
          // This fixes a bug where the time text could "move around" during a table resize event.
          timePicker.getComponentTimeTextField().setScrollOffset(0);
          // Return the time picker component.
          return timePicker;
      }
docs: getTableCellRendererComponent, Returns the renderer that is used for drawing the cell. This
  is required by the TableCellRenderer interface.
  
  For additional details, see the Javadocs for the function:
  TableCellRenderer.getTableCellRendererComponent().