package examples; import java.awt.*; import java.awt.event.ActionEvent; import javax.swing.*; import java.awt.geom.*; public class ScrollingAround { static JPanel colHeader() { JPanel p = new JPanel(); p.setSize(20,500); p.setLayout(new GridLayout(1,0)); for (int i = 'A'; i <= 'Z'; i++) p.add(new JLabel(" "+ (char) i + " ")); return p; } static JPanel rowHeader() { JPanel p = new JPanel(); p.setSize(500,20); p.setLayout(new GridLayout(0,1)); for (int i = 0; i < 50; i++) p.add(new JLabel(""+i)); return p; } public static void main(String[] args) { JFrame f = new JFrame("scrolling"); f.setLayout(new BorderLayout()); JScrollPane jsp = new JScrollPane(new JTextArea("foo")); f.add(jsp); jsp.setColumnHeaderView(colHeader()); jsp.setRowHeaderView(rowHeader()); JMenuBar bar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); fileMenu.add(new OpenAction()); bar.add(fileMenu); f.setJMenuBar(bar); f.add(new ShapeComponent(new Ellipse2D.Double(0,0,100,30), "ellipse"), BorderLayout.SOUTH); f.pack(); f.setVisible(true); } } class OpenAction extends AbstractAction { OpenAction() { super("open"); } public void actionPerformed(ActionEvent ae) { JOptionPane.showConfirmDialog(null,"Unimplemented"); } }