2011-04-29 24 views
2

好所以我做了我的数组并添加了一个动作侦听器,这样当点击名为“Submit”的按钮时,我的JTextFields中的所有数据都应该输入到ArrayList中,尽管这没有发生,为什么不会被赞赏。下面是执行的操作侦听器操作。从JTextFields发布到数组

public class Main { 
    String HouseNumber, StreetName, Town, Postcode, Beds, Price, Type; 
    JTextField HouseNumber1, StreetName1, Town1, Postcode1, Beds1, Price1, 
      Type1; 
    JLabel HouseNumberLabel, StreetNameLabel, TownLabel, PostcodeLabel, 
      BedsLabel, PriceLabel, TypeLabel; 
    JButton Submit; 
    JPanel panel; 
    JFrame frame; 

    public static void main(String[] args) { 
     Main gui = new Main(); 
     gui.go(); 
    } 

    public void go() { 
     frame = new JFrame(); 
     panel = new JPanel(); 
     HouseNumberLabel = new JLabel("House Number"); 
     HouseNumber1 = new JTextField(""); 
     StreetNameLabel = new JLabel("Street name"); 
     StreetName1 = new JTextField(""); 
     TownLabel = new JLabel("Town"); 
     Town1 = new JTextField(""); 
     PostcodeLabel = new JLabel("Postcode"); 
     Postcode1 = new JTextField(""); 
     BedsLabel = new JLabel("Number of beds"); 
     Beds1 = new JTextField(""); 
     PriceLabel = new JLabel("Price (£)"); 
     Price1 = new JTextField(""); 
     TypeLabel = new JLabel("Building Type"); 
     Type1 = new JTextField(""); 
     Submit = new JButton("Submit"); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
     frame.getContentPane().add(panel); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(300, 300); 
     frame.setVisible(true); 

     // Add contents to JFrame and JPanel 
     panel.add(HouseNumberLabel); 
     panel.add(HouseNumber1); 
     panel.add(StreetNameLabel); 
     panel.add(StreetName1); 
     panel.add(TownLabel); 
     panel.add(Town1); 
     panel.add(PostcodeLabel); 
     panel.add(Postcode1); 
     panel.add(BedsLabel); 
     panel.add(Beds1); 
     panel.add(PriceLabel); 
     panel.add(Price1); 
     panel.add(TypeLabel); 
     panel.add(Type1); 
     panel.add(Submit); 
     frame.pack(); 
     frame.show(); 

     final ArrayList<Main> p = new ArrayList<Main>(); 
     Submit.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) { 
       Main array = new Main(); 
       HouseNumber = HouseNumber1.getText(); 
       StreetName = StreetName1.getText(); 
       Town = Town1.getText(); 
       Postcode = Postcode1.getText(); 
       p.add(array); 
      } 
     }); 
    } 
} 
+1

为了更好地帮助越早,张贴[SSCCE(http://pscode.org/sscce.html)。 – 2011-04-29 17:56:49

+2

使用标准的Java变量命名约定。变量名称不应以大写字符开头。 – camickr 2011-04-29 19:51:13

回答

6

虽然主类中有场,因为它也是管理GUI,你不希望创建一个ArrayList<Main>

如果你只需要收集所有的字符串,那么你可以创建

ArrayList<String> houseDetails = new ArrayList<String>(); 

houseDetails.add(HouseNumber); 
houseDetails.add(StreenName); 
houseDetails.add(Town); 
houseDetails.add(Postcode); 

但清洁的事情是创建一个类来管理这些

class House 
{ 
    private String houseNumber; 
    private String streetName; 
    private String town; 
    private String postcode; 

    public String getHouseNumber() { 
     return houseNumber; 
    } 
    public void setHouseNumber(String houseNumber) { 
     this.houseNumber = houseNumber; 
    } 
    public String getStreetName() { 
     return streetName; 
    } 
    public void setStreetName(String streetName) { 
     this.streetName = streetName; 
    } 
    public String getTown() { 
     return town; 
    } 
    public void setTown(String town) { 
     this.town = town; 
    } 
    public String getPostcode() { 
     return postcode; 
    } 
    public void setPostcode(String postcode) { 
     this.postcode = postcode; 
    } 
} 

然后创建一个House并设置所有的值。

final ArrayList<House> houses = new ArrayList<House>(); 

,并在您的actionPerformed事件

House house = new House(); 
house.setHouseNumber(HouseNumber); 
... 

houses.add(house); 
+0

定居者是什么意思? – 2011-04-29 18:43:29

+0

你的'Main'类如何取这些字符串?必须有这些'set'方法或者像'array.HouseNumber = HouseNumber;' – 2011-04-29 18:45:01

+0

这样的字段,如果我能够向您展示我的整个代码,它会更好吗?即时通讯有点困惑哈哈 – 2011-04-29 18:58:21