在 ScrollPane 中添加多个 jlabel

1 java swing jlabel jscrollpane

我有一个滚动窗格,我想在其中添加多个 jlabel。在 jTextField1 中,用户输入 1-10 之间的 no(这里的 no. 表示必须添加多少 jlabel),相应地 jlabel 将添加到滚动窗格中。

谁能告诉我我该怎么做。

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));
Run Code Online (Sandbox Code Playgroud)

此代码不起作用。虽然当我们在另一个 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);
Run Code Online (Sandbox Code Playgroud)

但是,我想在同一个 jFrame 中进行。

Hov*_*els 5

  • 您不会将 JLabels 直接添加到 JScrollPane。
  • 但是您可以将它们添加到 JScrollPane 的 JViewport 持有的 JPanel(请务必阅读 JScollPane 教程)。通常认为的JPanel将使用网格布局,而你通过简单地调用添加的JLabeladd(...)的JPanel中,然后调用revalidate(),并repaint()在JPanel中已经添加的所有组件后
  • 但话虽如此,听起来好像使用 JScrollPane 持有的 JList 并向 JList 添加项目要好得多。请查看JList 教程以获取有关如何使用它的详细信息。

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