【问题标题】:Assign text to JLabels from ArrayList从 ArrayList 将文本分配给 JLabels
【发布时间】:2016-01-08 18:19:10
【问题描述】:

我实际上不确定如何问这个问题,因为它非常令人困惑。我有一个具有 MVC 结构的 Java 应用程序,它从数据库中获取数据。我从 JDBC 查询中检索数据的 String ArrayList。它包含有关比赛中参赛者的信息(例如:姓名、Race_no、Start_Time、Swim_Time、Bike_Time、Finish_Time 等)。名单大小每周都会有所不同,具体取决于该周参加比赛的参赛者的数量。我从数据库中获取数据没有问题,但是当我将信息传递给控制器​​以传递给视图时,我无法将数据分配给 JLabel。到目前为止,数据是作为一个大数组发送的,所以我需要以某种方式将数组分成 12 个块(这是每个竞争对手需要设置多少个 JLabel)。然后,我将这 12 个 JLabel 中的每一个设置为自己的 JPanel ArrayList - 然后动态添加到一个 JPanel 以进行打印。我的问题是,我如何拆分 ArrayList 以获得前 12 个,然后是第二批 12,等等。我尝试做一个嵌套循环并将大小设置为 12,但当然每次只能获得前 12 个.也许我需要将 JDBC 结果集中的数据存储为其他东西。我真的需要一些指导,因为这已经卡了好几天了。

nb:我将它作为数据处理程序类中的一个大方法工作,我将使用 while(rs.next()) 来完成所有工作,但由于 MVC 结构,我需要打破编码:这是期望的结果:

编辑: 我已经实现了这段代码,它给了我想要的输出,但现在无法用 [j] 循环中的数据分配 JLabel 变量:

<pre>
public void getRaceLabels()
    {
        ArrayList<String[]> raceLabels = dh.getRaceTimeLabels();

        //System.out.println(raceLabels);

        for (int i = 0; i < raceLabels.size(); i++)
        {

            String[] element = (String[]) raceLabels.get(i);
            //System.out.println(element);
            for (int j = 0; j < element.length; j++)
            {

                System.out.print(element[j]+" ,");
            }
            System.out.println("break");
        }
</pre>

【问题讨论】:

  • 听起来你应该使用 JTable
  • 是的,我可以做一个 JTable,但这不是客户想要的格式。他们希望能够在赛后将这些信息提供给竞争对手。
  • 好的,听起来你应该使用 JasperReports
  • @MadProgrammer 我查看了 JasperReports,但因为所有其他报告都只是 JTables,所以我认为为一个报告实现此功能有点矫枉过正。此外,我们的时间框架很短,没有时间学习如何使用它。

标签: java swing model-view-controller arraylist


【解决方案1】:

为自己创建一个 POJO,它表示您需要为单个记录提供的基本信息。

从数据库中加载数据时,将该数据加载到 POJO 中。

现在,对于每个面板,您只需将一个对象传递给它,这意味着您现在可以使用简单的迭代器来代替

【讨论】:

  • 我最终这样做了,只是迭代设置每个 JLabel 的文本。谢谢
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多