单击按钮后没有输出,因为该变量不存在?

时间:2019-08-29 11:46:42

标签: java swing jbutton indexoutofboundsexception

我想要一个带有一个TextArea和一个Button的框架。 当我按下按钮时,TextArea应该显示5个披萨的食物菜单,除了控制台显示

之外,它什么都没有显示
let         
startOfWeek = Date.StartOfWeek([Date]),
endOfWeek = Date.EndOfWeek([Date]),
yearOfStartOfWeek = Date.Year(startOfWeek),
yearOfEndOfWeek = Date.Year(endOfWeek),
    valueToReturn = if yearOfStartOfWeek = yearOfEndOfWeek then
    Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfWeek([Date]))
else
    Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfWeek(endOfWeek))
in valueToReturn

在windowsStart()方法中,对象存在并且可以调整。 在actionPerformed()方法中,对象是……某种不可见的,不存在?

"Exception in thread "AWT-EventQueue-0"  
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at de.kvwl.pizza.MainFrame.actionPerformed(MainFrame.java:54)"

TextArea应该获取ArrayList的值

1 个答案:

答案 0 :(得分:3)

您的例外发生在:at de.kvwl.pizza.MainFrame.actionPerformed(MainFrame.java:54)

此操作在windowStart期间与b.addActionListener(mFrame);关联。

但是我看到的是,您传递了另一个名为MainFrame的{​​{1}}实例作为参数(作为mFrame)。这个ActionListener永远不会用

加载列表
mFrame

简而言之,您有两个实例pPizza = test.csvRead();

  • 一个已创建并用于呼叫MainFrame
  • windowStart中创建了一个
  • ,用于执行windowsStart

最后一个永远不会加载数据列表。解释为什么在actionPerformed中填充列表而不在windowStart中填充列表,实际上您使用的是两个不同的实例actionPerformed和两个列表MainFrame

您可以通过删除第二个实例并将第一个实例pPizza用作this

来更正此问题。
ActionListener