Добавить несколько jlabels в ScrollPane

У меня есть панель прокрутки, в которую я хочу добавить несколько jlabel. В jTextField1 пользователь вводит нет между 1-10 (здесь номер говорит, сколько jlabels нужно добавить), и, соответственно, jlabels будут добавлены в область прокрутки.

Может ли кто-нибудь сказать мне, как я могу это сделать.

int x=jTextField1.getText;
    JPanel mainpanel = new JPanel();
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS));
    this.add(mainpanel);

    JPanel rightpanel = new JPanel();
    rightpanel.setLayout(new FlowLayout());
    for (int i = 0; i < x; i++)
    {
        rightpanel.add(new JLabel("Label " + i));
    }
    mainpanel.add(new JLabel("Left label"));
    mainpanel.add(new JScrollPane(rightpanel));

Этот код не работает. Хотя это работает, когда мы делаем то же самое в другом jFrame, т.е.

JFrame frame = new JFrame("Labels");

    JPanel mainpanel = new JPanel();
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS));
    frame.add(mainpanel);

    JPanel rightpanel = new JPanel();
    rightpanel.setLayout(new FlowLayout());
    for (int i = 0; i < 100; i++)
    {
        rightpanel.add(new JLabel("Label " + i));
    }
    mainpanel.add(new JLabel("Left label"));
    mainpanel.add(new JScrollPane(rightpanel));
    frame.setSize(500, 100);
    frame.setVisible(true);

Однако я хочу сделать это в том же jFrame.


person Amit Singh Gour    schedule 06.10.2013    source источник


Ответы (1)


  • Вы не добавляете JLabels непосредственно в JScrollPane.
  • Но вы можете добавить их в JPanel, который удерживается JViewport JScrollPane (обязательно просмотрите руководство по JScolPane). Часто эта JPanel будет использовать GridLayout, и вы добавляете JLabels, просто вызывая add(...) в JPanel, а затем вызывая revalidate() и repaint() в JPanel после добавления всех компонентов.
  • Но, сказав это, звучит так, как будто вам гораздо лучше использовать JList, хранящийся в JScrollPane, и добавлять элементы в свой JList. Пожалуйста, ознакомьтесь с руководством по JList, чтобы узнать, как это использовать.

Чтобы получить более подробный ответ, задайте более подробный вопрос, включая код, предпочтительно sscce.

person Hovercraft Full Of Eels    schedule 06.10.2013
comment
Я отредактировал свой вопрос Возможно, вам следовало сначала прочитать связанный документ по SSCCE. Редактирование включает некомпилируемые фрагменты кода, а не SSCCE. - person Andrew Thompson; 06.10.2013
comment
@AmitSinghGour: да, создайте и опубликуйте свой sscce. Но, несмотря ни на что, взгляните на ссылку на учебник JList, которую я разместил выше, так как она содержит самое простое решение. - person Hovercraft Full Of Eels; 06.10.2013