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のレイアウトがnullであるため、これが発生している可能性があると思います。BoxLayoutを垂直方向で使用して呼び出すとどうなりますdetail.setPreferredSize(new Dimension(140,400));か?

于 2012-04-04T18:17:58.440 に答える