Как использовать публичные переменные и методы в этом классе? - PullRequest
0 голосов
/ 21 мая 2018

Следующий код создает 12 панелей с меткой и кнопкой на каждой панели.

public MainFormWithPanel() {
    InventoryFileReader reader = new InventoryFileReader();
    ArrayList<Car> cars = reader.getAllCars();

    setLayout(new GridLayout(0,4));//set rows to zero so it fills rows first

    for(int i = 0; i < cars.size(); i++){
    InventoryItemPanel panel = new InventoryItemPanel();
    panel.setLabel(cars.get(i).getYear(), cars.get(i).getMake(), 
           cars.get(i).getModel(),cars.get(i).getMiles(), cars.get(i).getPrice());
    add(panel);
    }

    pack();

    initComponents();
}

Этот следующий класс содержит метод setLabel, который я использую выше, но он не возвращает значения, которые яЯ прохожу из машины.

public class InventoryItemPanel extends JPanel{
public int year;
public String make;
public String model;
public int miles;
public int price;



JLabel label = setLabel(year, make, model, miles, price);
Button button = new Button("View More Details");

public InventoryItemPanel(){
    setLayout(new GridLayout(2,1));
    add(label);
    add(button);


}

public JLabel setLabel(int year, String make, String model, int miles, int price){
    Locale locale = new Locale("en", "US");
    NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);     
    return new JLabel("<html>"+ year + " " + make + 
                " " + model + "<br> " +  + miles
                + " miles" + "<br>" +  formatter.format(price)+"</html>");
}
}

Выход для кода:

0 null null
0 miles
$0.00

Когда реальный результат должен быть:

2012 Toyota Corolla

70000 Miles

$12,000.00

Как ядолжен реализовать метод setLabel из класса InventoryItemPanel в классе MainFormWithPanel?

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте изменить строку:

    add(panel);

в MainFormWithPanel до:

    add(panel.setLabel(cars.get(i).getYear(), cars.get(i).getMake(), 
       cars.get(i).getModel(),cars.get(i).getMiles(), cars.get(i).getPrice()));
...