Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4356258

Regression Testing - Table cell rendering hosed (updated)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 1.4.0
    • 1.3.0
    • client-libs
    • beta
    • x86
    • windows_nt



      Name: sl110371 Date: 07/25/2000


      java version "1.3.0rc3"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0rc3-Z)
      Java HotSpot(TM) Client VM (build 1.3.0rc3-Z, mixed mode)

      I have a simple renderer that alternates white/blue foground/background colors
      based upon row. The table initially comes up with all the cells in the first
      column having white background and white foreground. Using the keyboard
      will 'fix' this. However, scrolling also leaves things unstable.

      This works fine in 1.2.2.

      Test case:
      import javax.swing.*;
      import javax.swing.table.*;
      import java.awt.*;

      public class RendererSample {

      static class EvenOddRenderer implements TableCellRenderer {
       
        public static final DefaultTableCellRenderer DEFAULT_RENDERER =
          new DefaultTableCellRenderer();

        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);
          Color foreground, background;
          if (isSelected) {
            foreground = Color.yellow;
            background = Color.green;
          } else {
            if (row % 2 == 0) {
              foreground = Color.blue;
              background = Color.white;
            } else {
              foreground = Color.white;
              background = Color.blue;
            }
          }
          renderer.setForeground(foreground);
          renderer.setBackground(background);
          return renderer;
        }
      }


        public static void main(String args[]) {
          Object rows[][] = {
            {"one", "ichi"},
            {"two", "ni"},
            {"three", "san"},
            {"four", "shi"},
            {"five", "go"},
            {"six", "roku"},
            {"seven", "shichi"},
            {"eight", "hachi"},
            {"nine", "kyu"},
            {"ten", "ju"}
          };
          Object headers[] = {"English", "Japanese"};
          JFrame frame = new JFrame("Renderer Sample");
          JTable table = new JTable(rows, headers);
          TableCellRenderer renderer = new EvenOddRenderer();
          table.setDefaultRenderer(Object.class, renderer);
          JScrollPane scrollPane = new JScrollPane(table);
          frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
          frame.setSize(300, 150);
          frame.setVisible(true);
        }
      }
      (Review ID: 104560)
      ======================================================================

            pmilnesunw Philip Milne (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: