Вопрос по java, jscrollpane, swing – Java Swing: JScrollPane не работает

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

enter image description here

Ваш Ответ

2   ответа
5

что означает, что он не расширяется, когда вы добавляете в него дочерние элементы, а это означает, что JScrollPane не имеет места для прокрутки. Либо позвониsetLayout() на вашем DetailPanel или переопределитьgetPreferredSize() сложить высоты своих детей и вернуть значимое значение.

Error: User Rate Limit ExceededsetPreferredSize()Error: User Rate Limit ExceededgetPreferredSize()Error: User Rate Limit Exceeded
3

но я думаю, что это может происходить из-за того, что макет DetailPanel пуст. Что произойдет, если вы используете BoxLayout в вертикальной ориентации и вызовdetail.setPreferredSize(new Dimension(140,400));?

Error: User Rate Limit Exceededstackoverflow.com/questions/7229226/…)

Похожие вопросы