I want to make a window with two buttons with great heights and a scrollbar on a side. The problem is that no scrollbar appears. Here is my code
public class
Scrollbars appear when the preferred size of the component added to the scollpane is greater than the size of the scrollpane.
It is the job of the layout manager to determine the preferred size of the panel. It is also the job of the layout manager to determine the size and location of the components added to the panel.
Get rid of the null layout and use a layout manager and scrollbars will appear when required automatically.
If you want components to be displayed differently from a vertical point of view, then you need to use a different layout manager. Maybe you can use a BoxLayout with a verticxal layout. You can use:
panel.add( Box.createVerticalStrut(400) );
to add vertical space between the two components.
To make the scrollbar always appear, use:
yourScrollBar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
...
import javax.swing.*;
import java.awt.*;
public class Window {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//namestanje teme
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame = new JFrame("frame");
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setPreferredSize(new Dimension(100,95));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton but1 = new JButton();
JButton but2 = new JButton();
panel.add(but1);
panel.add(but2);
but1.setSize(50, 505);
but2.setSize(50, 505);
but1.setLocation(0, 0);
but2.setLocation(400, 400);
but1.setText("1");
but2.setText("2");
JScrollPane scroll = new JScrollPane(panel);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.setLayout(new FlowLayout());
frame.pack();
frame.add(scroll);
frame.setVisible(true);
}
}