Добавяне на множество jlabels в ScrollPane

Имам панел за превъртане, в който искам да добавя множество jlabel. В jTextField1 потребителят въвежда no Between 1-10 (тук no. казва колко 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)


  • Не добавяте JLabel директно към JScrollPane.
  • Но можете да ги добавите към JPanel, който се държи от JViewport на JScrollPane (не забравяйте да преминете през урок за JScollPane). Често този 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