【问题标题】:Assistance needed with Java GUI working with ODFDOM使用 ODFDOM 的 Java GUI 需要帮助
【发布时间】:2013-06-17 23:36:45
【问题描述】:

好吧,作为一个小小的个人编程项目,我过去一直在尝试制作一个程序,该程序将(通过 GUI)记录游戏中某些东西的物品掉落数据(如果你是激战 2)再好奇)。 GUI 很简单:JFrame 包含两个 JLabelsJTextFields,用来说明要输入的内容,以及要输入的文本字段。基本的 GUI 内容。输入是项目名称和金额。此外,还有两个JButtons,每个都有一个监听器,用于添加和减去项目,最后另一个JLabel 用于显示错误消息。

项目到金额的“映射”结构在Java程序执行期间存储在TreeMap中。

我一直在创建一个粗略的基本实现,将数据保存在 .csv 文件中的内存中,但我昨晚决定要重新设计系统。因此,我产生了尝试“写入”电子表格格式的想法,我想,“为什么不使用 OpenOffice?因此,我发现了 ODFToolkit API 等,特别是 ODFDOM 工具,我当然很感兴趣。所以我认为我已经对这些东西进行了足够好的重构(如果这是正确的术语),并且事情会顺利进行,但是......这是我的问题:

所以,我在 GUI 中输入了一些测试输入; “臭鸡蛋”是一个有效的项目(无效的会在窗口中显示错误),我为获得的金额输入了一些正整数(仅可能是有效“金额”的类型)。现在,我第一次这样做时,使用像这样的有效输入它可以正常工作,但是如果我再次尝试使用不同的输入或相同的输入,它会显示错误文本,该错误文本应仅在输入无效项目时显示。我至少尝试了一些方法来调试它,但我不知道这个可怕的错误是如何产生的。

我将在这里为我自己的两个课程链接到 pastebin:
界面类:http://pastebin.com/rEbFS27j
其他类,即 Map 结构和其他在 GUI“后面”发生的东西:http://pastebin.com/BWA4SUY0

【问题讨论】:

    标签: java swing odftoolkit odfdom


    【解决方案1】:

    sigh 我终于明白了。我在写入电子表格的方法中有这个循环。

    while (it.hasNext() == true) {
                Map.Entry pairs = (Map.Entry)it.next();
    
                odt.getTableList().get(0).getCellByPosition("A" + i).setDisplayText((String) pairs.getKey()) ;
                odt.getTableList().get(0).getCellByPosition("B" + i).setDisplayText((pairs.getValue().toString())) ;
                it.remove(); // avoids a ConcurrentModificationException
                i++ ;
                }
    

    it.remove() 行(“it”是一个迭代器变量)是一个致命错误...当我在过去查找有关如何使用迭代器的资料时,不幸的是复制粘贴的残余...:/确实,这是造成这种可怕的“只能工作一次”的错误的原因。我想当我将别人的代码的 sn-ps 粘贴到我的工作中时,我真的需要确保我没有使用错误或不必要的东西......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 2013-12-20
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多