4

我有一个 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);

细节面板:

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

在此处输入图像描述

4

2 回答 2

6

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

于 2012-04-04T18:16:12.853 回答
3

我可能是错的,但我认为这可能是因为 DetailPanel 的布局为空。如果您在垂直方向使用 BoxLayout 并调用会发生什么detail.setPreferredSize(new Dimension(140,400));

于 2012-04-04T18:17:58.440 回答