Java Swing:JScrollPane无法正常工作

Rei*_*ard 4 java swing jscrollpane

我有一个包含一些字段的JPanel.JPanel的高度是有限的所以我必须在它周围放置一个JScrollPane,以便人们可以向下滚动.

正如您在下面看到的,它显示完美.但是你不能向下滚动(或向上).

DetailPanel detail = new DetailPanel();
JScrollPane jsp = new JScrollPane(detail);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jsp.setBounds(745, 10, 235, 225);
add(jsp);
Run Code Online (Sandbox Code Playgroud)

细节面板:

private void init(){
            setLayout(null);
            setSize(140, 400);
            int x = 5, y = 0;
            for(int i = 0; i < lbls.length; i++) {
                JLabel lbl = new JLabel(lbls[i]);
                lbl.setBounds(x, y, 200, 25);
                add(lbl);
                fields[i] = new JTextField();
                fields[i].setBounds(x, y+26, 200, 25);
                add(fields[i]);
                y+=50;
            }
        }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dan*_*n O 5

您的DetailPanel没有与之关联的布局管理器,这意味着当您向其添加子项时它不会展开,这意味着JScrollPane没有可以滚动的任何位置.调用setLayout()DetailPanel或覆盖getPreferredSize()以添加其子级的高度并返回有意义的值.