java - 在 ScrollPane 中添加多个 jlabel

标签 java swing jscrollpane jlabel

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

谁能告诉我该怎么做。

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 中完成。

最佳答案

  • 不要将 JLabel 直接添加到 JScrollPane。
  • 但是您可以将它们添加到由 JScrollPane 的 JViewport 持有的 JPanel(一定要通过 JScollPane tutorial)。 JPanel 通常会使用 GridLayout,您只需在 JPanel 上调用 add(...) 即可添加 JLabel,然后调用 revalidate()添加所有组件后在 JPanel 上重绘()
  • 但是话虽如此,听起来您最好还是使用 JScrollPane 持有的 JList 并将项目添加到您的 JList。请查看 JList tutorial有关如何使用它的详细信息。

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

关于java - 在 ScrollPane 中添加多个 jlabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209204/

相关文章:

java - Swing:在长时间运行的方法调用后切换到 JFrame 中的另一个面板

java - 用于预约系统的 Swing GUI

java - 我如何支持缩放显示在 JScrollPane 中的 View 以避免显示 JScrollBars 到最小尺寸?

java - Tomcat 获取 Java 堆空间

Java不显示矩形?

java - 流式传输桌面

java - 如何找到滚动条 slider 的大小?

java - 在没有布局管理器的情况下将 JScrollPane 添加到 JPanel

java - JBoss 6 中实例之间共享属性文件

java - 如何获取 Spring 中所有 session 的列表?