#java #swing #arraylist
#java #swing #список массивов
Вопрос:
Хорошо, итак, я создал свой массив и добавил прослушиватель действий, так что при нажатии кнопки с именем «Отправить» все данные из моих JTextFields должны вводиться в ArrayList, хотя этого не происходит, любая помощь о том, почему нет, была бы признательна. ниже приведено выполняемое действие прослушивателя действий.
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 .
2. Использование стандартных соглашений об именовании переменных Java. Имена переменных не должны начинаться с символа верхнего регистра.
Ответ №1:
Хотя в вашем основном классе есть поля, поскольку он также управляет графическим интерфейсом, вы не хотите создавать 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;
}
}
а затем создайте дом и задайте все значения.
final ArrayList<House> houses = new ArrayList<House>();
и в вашем событии actionPerformed
House house = new House();
house.setHouseNumber(HouseNumber);
...
houses.add(house);
Комментарии:
1. Что вы подразумеваете под поселенцами?
2. как ваш
Main
класс принимает эти строки? должны быть этиset
методы или просто поля, такие какarray.HouseNumber = HouseNumber;
3. было бы лучше, если бы я мог показать вам весь мой код? я немного смущен, лол
4. да, это помогло бы. но если это слишком много кода (> 150 строк), то почему бы вам не создать вставку из pastie.org и разместите ссылку в своем вопросе
5. я отредактировал основной пост, показывающий весь код из класса, я был бы очень признателен, если бы вы могли направить меня в правильном направлении, чтобы данные были переданы в список массива, заранее спасибо