/* Listing3801.java */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Listing3801
extends JFrame
{
  public Listing3801()
  {
    super("JScrollPane");
    addWindowListener(new WindowClosingAdapter(true));
    //Dialogpanel erzeugen
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(10, 10));
    for (int i = 1; i <= 100; ++i) {
      panel.add(new JCheckBox("Frage " + i));
    }
    //JScrollPane erzeugen
    JScrollPane scroll = new JScrollPane(panel);
    scroll.setCorner(
      JScrollPane.UPPER_RIGHT_CORNER,
      new JLabel("1", JLabel.CENTER)
    );
    scroll.setCorner(
      JScrollPane.LOWER_RIGHT_CORNER,
      new JLabel("2", JLabel.CENTER)
    );
    scroll.setColumnHeaderView(new ColumnHeader(panel, 10));
    //JScrollPane zur ContentPane hinzufügen
    getContentPane().add(scroll, BorderLayout.CENTER);
  }

  public static void main(String[] args)
  {
    Listing3801 frame = new Listing3801();
    frame.setLocation(100, 100);
    frame.setSize(300, 150);
    frame.setVisible(true);
  }
}

class ColumnHeader
extends JComponent
{
  JComponent component;
  int        columns;

  public ColumnHeader(JComponent component, int columns)
  {
    this.component = component;
    this.columns   = columns;
  }

  public void paintComponent(Graphics g)
  {
    int width = component.getSize().width;
    int height = getSize().height;
    int colwid = width / columns;
    for (int i = 0; i < columns; ++i) {
      g.setColor(i % 2 == 0 ? Color.yellow : Color.gray);
      g.fillRect(i * colwid, 0, colwid, height);
    }
    g.setColor(Color.black);
    g.drawLine(0, height - 1, width, height - 1);
  }

  public Dimension getPreferredSize()
  {
    return new Dimension(component.getSize().width, 20);
  }
}