1

我有一个滚动窗格,我想在其中添加多个 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 中执行此操作。

4

1 回答 1

5
  • 您不会将 JLabels 直接添加到 JScrollPane。
  • 但是您可以将它们添加到由 JScrollPane 的 JViewport 保存的 JPanel 中(请务必阅读 JScollPane 教程)。通常,JPanel 将使用 GridLayout,您只需在 JPanel 上调用即可添加 JLabels ,然后在添加所有组件后在 JPanel 上add(...)调用revalidate()repaint()
  • 但是话虽如此,听起来好像您最好使用由 JScrollPane 保存的 JList 并将项目添加到您的 JList。有关如何使用它的详细信息,请查看JList 教程。

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

于 2013-10-06T13:12:22.733 回答