滚动条未出现在JScrollPane中

Dam*_*jan 5 java swing jscrollpane

我想制作一个窗口,其中两个按钮的高度很高,一侧有一个滚动条.问题是没有滚动条出现.这是我的代码

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.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel(null);

    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);

    frame.add(scroll);
    frame.setVisible(true);         
}
}
Run Code Online (Sandbox Code Playgroud)

注意:首先,按钮具有较大的宽度(通过用"11111111111111111111111111111"之类的命名命名它们)并且会出现滚动条.然后我想要很高的高度,不得不在面板中放置null.现在没有滚动条出现.

cam*_*ckr 14

添加到scollpane的组件的首选大小大于滚动窗格的大小时,会显示滚动条.

布局管理器的工作是确定面板的首选大小.布局管理器的工作也是确定添加到面板的组件的大小和位置.

摆脱空布局并使用布局管理器,并在需要时自动显示滚动条.

如果希望组件的显示方式与垂直视图不同,则需要使用不同的布局管理器.也许你可以使用带有verticxal布局的BoxLayout.您可以使用:

panel.add( Box.createVerticalStrut(400) );
Run Code Online (Sandbox Code Playgroud)

在两个组件之间添加垂直空间.