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 DefaultLookAndFeelDecorateJFrame.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 bottomJLabel 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 350jpn.setPreferredSize(new Dimension(180, 350));//create scrollable component and assign jpanel to be viewJScrollPane jsp = new JScrollPane(jpn);//set jscrollpane size to 200x150jsp.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.