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

标签 java swing jbutton indexoutofboundsexception

我想要一个带有一个 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/

相关文章:

java - 是否必须调用 AndroidThreeTen.init()?

java - Spring init 方法参数问题

Java 泛型 : Unchecked cast in generic List even though already checked with instanceof

java swing组件无法解析

Java-CardLayout 如何从正在切换的卡片中切换卡片

java - Miglayout、基线和 JTextAreas

java - JButton() 仅在鼠标悬停时起作用

java - Android 应用内支付公钥异常

Java Swing Jbutton 访问另一个类中按下的按钮?

java - Jbutton 覆盖 Jbutton 背景图像?