基於另一個Headfirst練習,我在使用車輛數據填充GUI時遇到了問題。我使用一個控制器類來管理我的車輛對象類。出於某種原因,我得到一個索引超出範圍例外。將值/字符串返回給JTextField,IndexoutofboundsException
GUI類
public class ShowroomDriver{
public static Showroom Cars = new Showroom("Cars");
public static void main(String[] args) {
Showroom Cars = new Showroom("Cars");
Vehicle vechicle1 = new Vehicle("Ford");
Cars.addVehicle(vechicle1);
GuiInterface gui = new GuiInterface("Car Showroom");
}
private static class GuiInterface extends JFrame {
private JButton saleButton, previousButton, nextButton;
private static JTextField textField1;
private JLabel label1;
private JPanel[] p = new JPanel[5];
public GuiInterface(String sTitle) {
super(sTitle);
setLayout(new FlowLayout());
previousButton = new JButton("Previous Car");
nextButton = new JButton("Next Car");
saleButton = new JButton("Sale");
for(int i = 0; i < 5; i++){
p[i] = new JPanel();
}
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel formPanel = new JPanel(new GridLayout(1, 2));
textField1 = new JTextField(10);
label1 = new JLabel("Manufacture");
p[0].add(label1);
p[1].add(textField1);
for(int i = 0; i < 2; i++){
formPanel.add(p[i]);
}
contentPane.add(formPanel, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,300);
this.setResizable(false);
this.setLocationRelativeTo(null);
getField();
this.setVisible(true);
}
private void getField(){
textField1.setText(Cars.currentVehicle().getManufacutre());
}
}
}
控制器類
public class Showroom{
private ArrayList<Vehicle> vehiclesSold = new ArrayList();
private ArrayList<Vehicle> theVehicles;
private String vechicleType;
private int arrayPosition = 0;
public Showroom(String type){
vechicleType = type;
theVehicles = new ArrayList<Vehicle>();
}
public boolean addVehicle(Vehicle newVehicle){
theVehicles.add(newVehicle);
return true;
}
public Vehicle currentVehicle(){
return theVehicles.get(arrayPosition);
}
public void getVehicles(){
System.out.println("---Vehicle Type: " + vechicleType +"---");
for(Vehicle nextVehicle : theVehicles){
System.out.println(nextVehicle.toString());
}
}
}
車輛類別
public class Vehicle{
private String Manufacture
Vehicle(String Manufacture){ //There are more
this.Manufacture = Manufacture;
}
}
@Override
public String toString(){
String s = "Maufacture: " + getManufacutre()
"\n";
return s;
}
public String getManufacutre() { return this.Manufacture; }
}
對不起,沒想法,爲了更快的幫助發佈[SSCCE](http://sscce.org/),只顯示了帶有JTextField的isuue,short,runnable,complilable – mKorbel
錯誤是IndexOutOfBoundsException:Index:0,Size :0.即使我知道陣列中有4個。我已經用上面顯示的getVehicles方法證明了它。 – Melky
這個異常可能對我寫的代碼很有趣,看到並在我的屏幕上調試.... – mKorbel