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

Java rowHeader scrolling problem

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 1.3.0
    • client-libs
    • None


      In the customer words:

      } >I have run into another Java problem with the rowHeader in a JScrollPane
      } >not staying in synch with the main component in the scroll pane when
      } >scrolling vertically by dragging the mouse in the row header.
      } >
      } >If you do this by dragging the mouse in the main component they do stay in
      } >synch.
      } >
      } >I found a bug report in the Sun database that describes this exact problem.
      } >#4242632
      } >This report was dup'd to #4227520 which was then closed as unreproducable.

      At the end you'll find a test case that reproduces the problem.

      08/20/01 Fernando Castano

      ---begin-------------------------------------------------------
      /* (swing1.1beta3) */
      //package jp.gr.java_conf.tame.swing.examples;

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


      /**
       * @version 1.0 11/09/98
       */
       
      class RowHeaderRenderer extends JLabel implements ListCellRenderer {
        
        RowHeaderRenderer(JTable table) {
          JTableHeader header = table.getTableHeader();
          setOpaque(true);
          setBorder(UIManager.getBorder("TableHeader.cellBorder"));
          setHorizontalAlignment(CENTER);
          setForeground(header.getForeground());
          setBackground(header.getBackground());
          setFont(header.getFont());
        }
        
        public Component getListCellRendererComponent( JList list,
               Object value, int index, boolean isSelected, boolean cellHasFocus) {
          setText((value == null) ? "" : value.toString());
          return this;
        }
      }

      public class RowHeaderExample extends JFrame {

        public RowHeaderExample() {
          super( "Row Header Example" );
          setSize( 300, 150 );
              
          ListModel lm = new AbstractListModel() {
            String headers[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i"};
            public int getSize() { return headers.length; }
            public Object getElementAt(int index) {
              return headers[index];
            }
          };

          DefaultTableModel dm = new DefaultTableModel(lm.getSize(),10);
          JTable table = new JTable( dm );
          table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
          
          JList rowHeader = new JList(lm);
          rowHeader.setFixedCellWidth(50);
          
          rowHeader.setFixedCellHeight(table.getRowHeight()
                                     + table.getRowMargin());
      // + table.getIntercellSpacing().height);
          rowHeader.setCellRenderer(new RowHeaderRenderer(table));

          JScrollPane scroll = new JScrollPane( table );
          scroll.setRowHeaderView(rowHeader);
          getContentPane().add(scroll, BorderLayout.CENTER);
        }

        public static void main(String[] args) {
          RowHeaderExample frame = new RowHeaderExample();
          frame.addWindowListener( new WindowAdapter() {
            public void windowClosing( WindowEvent e ) {
      System.exit(0);
            }
          });
          frame.setVisible(true);
        }
      }
      ---end-------------------------------------------------------

            svioletsunw Scott Violet (Inactive)
            duke J. Duke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: