2017-04-25 57 views
0

我想送3个不同的JTextFields将到一个ArrayList,但我得到的错误:按钮将不会允许我将数据添加到ArrayList中 - Java的

"forms" cannot be resolved in this line: forms.add(form); 

这里是整个按钮的代码,发送数据:

// button add 
    btnAdd.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent e) { 

      Product form = new Product(); 
      form.date = textDate.getText(); 
      form.fac = textFac.getText(); 
      form.total = Long.parseLong(textTotal.getText()); 
      forms.add(form); 
     } 
    }); 

ArrayList中被称为 “形式”:

package dao; 


    import entities.*; 
    import java.util.*; 
    import javax.swing.JTextField; 
    import java.text.*; 
     import javaapplication1.*; 

    public class ProductModel{ 

    public List<Product> findAll(){ 
     try { 
      List<Product> forms = new ArrayList<Product>(); 
      JTextField textDate; 
      JTextField textFecha; 
      JTextField textTotal; 
      return forms; 
     } catch (Exception e){ 
      return null; 
     } 
     } 

    } 

所以,我真的不知道为什么forms.add(form);不起作用。我确实有import thePackageOfthearraylist.*;但仍然不知道为什么它不起作用。

+2

'forms'对于'findAll'方法是本地的,如果'addActionListener'和'findAll'都在同一个类中,则需要将其设置为包含类的全局变量,否则请考虑创建一个' getter'方法到'forms'列表中,如果他们在不同的类中。 –

+0

好吧,他们都在同一个班级......你是什么意思的“findAll”我怎么把它放在按钮右边? –

回答

0

您必须创建类型为java.util.ArrayList的表单变量。将此变量设置为全局或本地,并使用ProductModel.finalAll方法进行初始化。在类级和本地装置可变

List<Product> forms=new ArrayList<Product>(); 
// button add 
    btnAdd.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent e) { 

      Product form = new Product(); 
      form.date = textDate.getText(); 
      form.fac = textFac.getText(); 
      form.total = Long.parseLong(textTotal.getText()); 
      forms.add(form); 
     } 
    }); 

全球装置在方法

创建
+0

我该怎么做,你能举个例子吗?我试着搜索谷歌(如何设置一个全局变量),我发现一种方法是将类设置为“静态”,但它不起作用。你能解释一下吗? –

+0

发布所有相关类和更好的可运行代码。起初学习java核心,mvc模式然后去摆动 –

0

要使用数组列表“形式”的actionPerformed方法列表必须被定义并在actionPerformed方法的局部范围初始化内部或者在包含actionPerformed方法的类的全局范围中定义。