【发布时间】:2015-08-02 03:37:23
【问题描述】:
我遇到了一些本应直截了当的问题。尝试使用方法更改 ArrayList 中的元素时,我不断收到“此处不允许无效”错误
public static void editDialog(int pos)
{
if(parcelList.get(pos).type==1)
{
JTextField field1 = new JTextField(""+parcelList.get(pos).idNum);
JTextField field2 = new JTextField(""+parcelList.get(pos).zone);
JTextField field3 = new JTextField(""+parcelList.get(pos).getWidth());
JTextField field4 = new JTextField();
JTextField field5 = new JTextField(""+parcelList.get(pos).getHeight());
Object[] fields =
{
"Please Enter New Box Details:\n", "\n",
"Box ID:", field1,
"Delivery Zone:", field2,
"Width:", field3,
"Length:", field4,
"Height:", field5
};
JOptionPane.showConfirmDialog(null, fields, "Amend Box Details:",
JOptionPane.OK_CANCEL_OPTION);
System.out.println(field1.getText() + "" + field2.getText() + "" + field3.getText() + "" + field4.getText()
+ "" + field5.getText());
String getZone = field2.getText();
int id = Integer.parseInt(field1.getText());
char zone = getZone.charAt(0);
int width = Integer.parseInt(field3.getText());
int length = Integer.parseInt(field4.getText());
int height = Integer.parseInt(field5.getText());
parcelList.set(pos,Parcel.newParcel.addBox(id, zone, width, length, height));
}
addBox 构造函数如下:
public void addBox(int id, char z, int w, int l, int h)
{
parcelList.add(new Box(id,z,w,l,h));
}
我需要做的就是更改列表中特定位置的值。有谁知道我为什么会收到这个错误?
包裹类
protected static ArrayList<Parcel> parcelList;
protected static ParcelList newParcel = new ParcelList();
public Parcel(int id, char z)
{
this.idNum = id;
this.zone = z;
}
//default contstructor
public Parcel()
{
this.idNum=0;
this.zone='z';
this.charge=0;
this.type=0;
this.i=new ImageIcon("images/nullParcel.jpg");
}
public double getCharge()
{
return charge;
}
public boolean isLarge()
{
return false;
}
public ImageIcon getImage()
{
return i;
}
@Override
public String toString()
{
return "Parcel{" + "idNum=" + idNum + ", charge=" + charge + ", zone=" + zone + '}';
}
public void setIdNum(int idNum) {
this.idNum = idNum;
}
public void setZone(char zone) {
this.zone = zone;
}
ParcelList 类:
ParcelList()
{
parcelList = new ArrayList<Parcel>();
}
public void addBox(int id, char z, int w, int l, int h)
{
parcelList.add(new Box(id,z,w,l,h));
}
public void removeItem(int b)
{
parcelList.remove(b);
}
public void addTube(int id, char z, int l)
{
parcelList.add(new Tube(id,z,l));
}
public void addEnvelope(int id, char z, char s)
{
parcelList.add(new Envelope(id, z, s));
}
public void printString()
{
for(Parcel p:parcelList)
{
System.out.println(p.toString()+"");
}
}
public boolean isFull()
{
if(parcelList.size()<=11)
{
return false;
}
return true;
}
public void clearList()
{
parcelList.clear();
}
public String listSize()
{
return ""+parcelList.size();
}
public boolean isEmpty()
{
return this.isEmpty();
}
@Override
public String toString() {
return "AssetList{" + "assetList=" + parcelList + '}';
}
}
【问题讨论】:
-
你认为
set是做什么的?你认为应该采取什么论据?你为什么这么认为?你认为这个错误意味着什么? -
我希望这个答案对您有所帮助。 stackoverflow.com/questions/15019723/…
-
我认为 .set 方法会将当前元素设置为我传入的任何新元素?至于错误我不知所措,这就是我在这里发布的原因。
-
addBox属于哪个类?ParcelList的代码是什么? -
addBox 属于 ParcelList,我编辑过原帖。
标签: java methods arraylist constructor void