2011-04-28 88 views
0

我想將「HouseNumber,StreetName,Town,Postcode」的值添加到我的JPanel文本框的「Address」數組中,最好的方法是什麼?感謝如何將輸入到JPanel的TextField中的值添加到數組中?

主類

public class Main{ 
public static void main(String[] args){ 
JFrame frame = new JFrame("Burgess-Brown-Pearson Homes"); 
JPanel panel = new JPanel(); 
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
JLabel HouseNumberLabel = new JLabel("House Number"); 
JTextField HouseNumber = new JTextField(""); 
JLabel StreetNameLabel = new JLabel("Street Name"); 
JTextField StreetName = new JTextField(""); 
JLabel TownLabel = new JLabel("Town"); 
JTextField Town = new JTextField(""); 
JLabel PostCodeLabel = new JLabel("PostCode"); 
JTextField PostCode = new JTextField(""); 
JLabel BedsLabel = new JLabel("Number of Beds"); 
JTextField Beds = new JTextField(""); 
JLabel PriceLabel = new JLabel("Price"); 
JTextField Price = new JTextField(""); 
JLabel TypeLabel = new JLabel("Building Type"); 
JTextField Type = new JTextField(""); 
JButton Submit = new JButton("Submit"); 
frame.setSize(500,500); 
panel.setSize(500,500); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.getContentPane().add(panel); 
panel.add(HouseNumberLabel); 
panel.add(HouseNumber); 
panel.add(StreetNameLabel); 
panel.add(StreetName); 
panel.add(TownLabel); 
panel.add(Town); 
panel.add(PostCodeLabel); 
panel.add(PostCode); 
panel.add(BedsLabel); 
panel.add(Beds); 
panel.add(PriceLabel); 
panel.add(Price); 
panel.add(TypeLabel); 
panel.add(Type); 
panel.add(Submit); 
frame.pack(); 
frame.show(); 
//Create new Person objects 
Address p[] = new Address[3]; 
p[0] = new Address("27","Abbey View","Hexham","NE46 1EQ"); 
p[1] = new Address("15", "Chirdon Crescent", "Hexham", "NE46 1LE"); 
p[2] = new Address("6", "Causey Brae", "Hexham", "NE46 1DB"); 
Details c[] = new Details[3]; 
c[0] = new Details ("3", "175,000", "Terraced"); 
c[1] = new Details ("6", "300,000", "Bungalow"); 
c[2] = new Details ("4", "250,000", "Detached"); 
//Send some messages to the objects 
c[0].setBeds("3 "); 
c[1].setBeds("6"); 
c[2].setBeds("4"); 
c[0].setPrice("175,000"); 
c[1].setPrice("300,000"); 
c[2].setPrice("250,000"); 
c[0].setType("Terraced"); 
c[1].setType("Bungalow"); 
c[2].setType("Detached"); 
//Set up the association 
p[0].ownsDetails(c[0]); 
p[1].ownsDetails(c[1]); 
p[2].ownsDetails(c[2]); 

System.exit(0); 
} 
} 

地址類

public final class Address{ 
    //Class properties 
    private String HouseNumber, StreetName, Town, Postcode; 
    //Allow this person to own a car 
    private Details owns; 

    //Constructor 
    public Address(String aHouseNumber, String aStreetName, String Town, String Postcode) 
    { 
    setHouseNumber(aHouseNumber); 
    setStreetName(aStreetName); 
    setTown(Town); 
    setPostcode(Postcode); 
    } 

    public Address(){ 
    } 
    } 

    //Add a house 
    public void ownsDetails(Details owns){ 
    this.owns = owns; 
    } 
    //Set methods for properties 
    public void setHouseNumber(String aName){ 
    HouseNumber = aName; 
    } 
    public void setStreetName(String aName){ 
    StreetName = aName; 
    } 
    public void setTown(String anName){ 
    Town = anName; 
    } 
    public void setPostcode (String anName){ 
    Postcode = anName; 
    } 
    //Get methods for properties 
    public String getHouseNumber(){ 
    return HouseNumber; 
    } 
    public String setStreetName(){ 
    return StreetName; 
    } 
    public String setTown(){ 
    return Town; 
    } 
    public String setPostcode(){ 
    return Postcode; 
    } 

**詳細類**

public final class Details{ 
//Class properties 
private String Type, Beds, Price; 

//Constructor 
public Details(String aType, String aBeds, String aPrice){ 
    setType(aType); 
    setBeds(aBeds); 
    setPrice(aPrice); 
    } 

    //Set methods for properties 
    public void setType(String aType){ 
    Type = aType; 
    } 
    public void setBeds(String aBeds){ 
    Beds = aBeds; 
    } 
    public void setPrice(String aPrice){ 
    Price = aPrice; 
    } 
    //Get methods for properties 
    public String getType(){ 
    return Type; 
    } 
    public String getBeds() { 
    return Beds; 
    } 
    public String getPrice(){ 
    return Price; 
    } 
    } 
+0

@Darren Burgess:地址類是哪種類型?你有沒有實現? – Heisenbug 2011-04-28 15:05:39

+0

你是什麼意思? – 2011-04-28 15:08:25

+0

地址p [] =新地址[3];顯示地址 – Heisenbug 2011-04-28 15:20:55

回答

2

我真的不明白的問題。你有所有你需要的方法。 無論如何,我會盡量給你一些提示。首先,如果JTextField用於創建新地址,並且不更新其中一個現有的,那麼靜態數組可能不是正確的選擇。你應該使用ArrayList代替:

ArrayList<Address> p = new ArrayList<Address>(); 

然後簡單地檢索來自JTextField中的數據,並構建另一個地址對象:

Address newAddress = new Address(HouseNumber.getText(), 
           StreetName.getText(), 
           Town.getText(), 
           Postcode.getText()); 
p.add(newAddress); 

這是否足以解決你的疑惑?

+0

這是非常感謝是的,原本有一個arraylist不知道我改變了什麼:S – 2011-04-28 19:50:43

+0

by匿名upvoter +1 – mKorbel 2011-06-14 02:55:02