在ScrollPane中添加多个jlabels

时间:2013-10-06 13:09:56

标签: java swing jscrollpane jlabel

我有一个滚动窗格,我想在其中添加多个jlabel。在jTextField1中,用户输入no 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中进行。

1 个答案:

答案 0 :(得分:4)

  • 您不直接将JLabel添加到JScrollPane。
  • 但是你可以将它们添加到由JScrollPane的JViewport保存的JPanel中(确保通过JScollPane tutorial)。通常,JPanel将使用GridLayout,只需在JPanel上调用add(...),然后在添加所有组件后调用JPanel上的revalidate()repaint(),就可以添加JLabel
  • 但话说回来,听起来好像使用JScrollPane持有的JList并向JList添加项目要好得多。有关如何使用此功能的详细信息,请查看JList tutorial

要获得更详细的答案,您需要提出更详细的问题,包括代码,最好是sscce