2013-10-06 3 views
1

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

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

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.

ответ

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

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

+0

Эй, на воздушной подушке. Я отредактировал свой вопрос, пожалуйста, помогите мне –

+1

* «Я отредактировал свой вопрос» * Возможно, вам следовало сначала прочитать связанный документ на SSCCE. Редактирование включает в себя несовместимые фрагменты кода, а не SSCCE. –

+0

@AmitSinghGour: да, создайте и опубликуйте свой sscce. Но независимо от того, посмотрите на ссылку учебника JList, которую я опубликовал выше, поскольку это похоже на то, чтобы провести самое прямое решение. –

Смежные вопросы