ho questo jframe con dentro un jpanel, un jscrollpane e un jbutton.
il jpanel ha come sfondo una immagine totale del desktop.
teoricamente quindi il jpanel dovrebbe essere più grande del proprio contenitore.
però nn scrolla:
codice:
public class DrawPanel extends JFrame {

    private JButton button;
    private JScrollPane scroll;

    public DrawPanel(String path) {
        super("Draw panel");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLayout(new BorderLayout());
        button = new JButton("Capture");
        imagePanel panel = new imagePanel(path);
        scroll = new JScrollPane();
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        scroll.setViewportView(panel);
        add(scroll, BorderLayout.CENTER);
        add(button, BorderLayout.SOUTH);
    }

    private class imagePanel extends JPanel implements MouseListener, MouseMotionListener {

        private BufferedImage buff;
        private Rectangle currentRect;
        private String fileDelete;
        private int xx = 0;
        private int yy = 0;
        private int w = 0;
        private int h = 0;

        public imagePanel(String path) {
            setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
            fileDelete = path;
            try {
                buff = ImageIO.read(new File(path));
                button.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent e) {
                        capture(e);
                    }
                });
.........
il jframe è richiamato da un'altra classe e si avvia massimizzato:
codice:
        DrawPanel panel = new DrawPanel(percorso);    
        panel.setVisible(true);
        panel.setExtendedState(JFrame.MAXIMIZED_BOTH);
ho cercato anche su un libro che ho a casa e già ho scritto più codice degli esempi.