Some of us may like to use the null layout instead of any ready layout manager. However, when it comes to using JscrollPane or other scrollable components, I've found that the scrollbar is unable to appear even when the JComponent (such as a JPanel) is larger than the JScrollPane. The following code demonstrates a way to overcome this problem:
//enable the DefaultLookAndFeelDecorate
JFrame.setDefaultLookAndFeelDecorated(true);
//create a JFrame//
JFrame jfr = new JFrame("Frame");
//create a jpanel with null layout//
JPanel jpn = new JPanel();
jpn.setLayout(null);
//create two label and add inside the jpanel, one at top and one at bottom
JLabel label1, label2;
label1 = new JLabel("Label 1"); label1.setBounds(2, 2, 100, 25);
label2 = new JLabel("Label 2"); label2.setBounds(2, 300, 100, 25);
jpn.add(label1); jpn.add(label2);
//set jpanel size[viewable] to 180 x 350
jpn.setPreferredSize(new Dimension(180, 350));
//create scrollable component and assign jpanel to be view
JScrollPane jsp = new JScrollPane(jpn);
//set jscrollpane size to 200x150
jsp.setBounds(2, 2, 200, 150);
jfr.setContentPane(jsp);
jfr.setSize(210, 180);
jfr.setVisible(true);
The most important thing is to remember to set your JComponent's size by using the
setPreferredSize(...) method and make sure JScrollPane is smaller than JPanel.