gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:40:30 24 4
gpt4 key购买 nike

我想要一个包含一个 TextArea 和一个 Button 的框架。当我按下按钮时,TextArea 应该显示 5 个比萨饼的食物菜单,它什么也没有显示,除了控制台显示

"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)"

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

public void windowStart()
{
MainFrame mFrame = new MainFrame();
PizzaReader2 test = new PizzaReader2();
pPizza = test.csvRead();

System.out.println("\n\n\n" + pPizza.get(0) + "\n\n\n");

f = new JFrame("Textfield");
b = new JButton("Menu");
jt = new JTextArea(10,10);
JPanel pTextArea = new JPanel();
b.addActionListener(mFrame);

pTextArea.add(jt);
pTextArea.add(b);
f.add(pTextArea);

f.setSize(300, 300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
//jt.setText("TestText");
System.out.println("\n\n\n" + pPizza.get(0) + "\n\n\n");

String s = e.getActionCommand();
if (s.equals("Menu"))
{
System.out.println("Button gedrückt");
//jt.setText("");
for (int i = 0; i < pPizza.size(); i++)
{
jt.append(pPizza.get(i)+"\n");
}

TextArea 应该获取 ArrayList 的值

最佳答案

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

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

但我看到的是您传递了另一个名为 mFrameMainFrame 实例作为参数(作为 ActionListener)。此 mFrame 从不使用

加载列表
pPizza = test.csvRead();

简而言之,您有两个实例 MainFrame:

  • 一个创建并用于调用 windowStart
  • 一个在 windowsStart 中创建并用于执行 actionPerformed

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

您可以通过删除第二个实例并使用 this 来更正此问题,第一个实例作为 ActionListener

b.addActionListener(this);

关于java - 单击按钮后没有输出,因为变量不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com