0

この方法には問題があります。GUIで作成できるArrayListのオブジェクトでTextAreaを埋めたいと思います。オブジェクトは問題なく作成されますが、別のオブジェクトを作成すると、古い ArrayList が TextArea に表示されたままになりますが、実際には、内部で重複が発生することなく、完全な ArrayList を再度表示したいだけです。

//The code that is presenting the text in the TextArea

public void addTextBlock(double length, double width, double height) {

    shapecontrol.makeBlock(length, width, height);
    for(int i = 0; i < shapecontrol.getShapeCollection().giveCollection().size(); i++)
     {
        InfoShapeTextArea.append(shapecontrol.getShapeCollection().giveShape(i).toString() + "\n");

     } 
}

.makeBlock メソッド:

public void makeBlock(double length, double width, double height)
{

    Shape shape= new Block( length,  width, height);
    shapecollection.addShape(shape);

}

.getShapeCollection() メソッド:

public ShapeCollection getShapeCollection() {
    return shapecollection;
}

.giveCollection() メソッド:

public ArrayList<Shape> giveCollection(){
   return shapecollection;
}

.giveShape() メソッド:

public Shape giveShape(int index){


  return shapecollection.get(index);     

}
4

1 に答える 1

0

InfoshapeTextArea次の呼び出しの間をクリアする必要がありますaddTextBlock

public void addTextBlock(double length, double width, double height) {
    shapecontrol.makeBlock(length, width, height);
        InfoShapeTextArea.clear(); // or setText("") or whatever will clear the text area
        for(int i = 0; i < shapecontrol.getShapeCollection().giveCollection().size(); i++)
        {
            InfoShapeTextArea.append(shapecontrol.getShapeCollection().giveShape(i).toString() + "\n");
        }
}

ArrayListまたは、同じ情報を書き直し続けるやむを得ない理由がない限り、の内容全体ではなく、最新のテキスト ブロックを追加するだけです。

public void addTextBlock(double length, double width, double height) {
    shapecontrol.makeBlock(length, width, height);
    int size = shapecontrol.getShapeCollection().giveCollection().size();
    InfoShapeTextArea.append(shapecontrol.getShapeCollection().giveShape(size-1).toString() + "\n");
}

Shapeへの呼び出しからオブジェクトを返すだけで、物事をさらに簡単にすることができmakeBlockます。

public Shape makeBlock(double length, double width, double height)
{
    Shape shape= new Block( length,  width, height);
    shapecollection.addShape(shape);
    return shape;
}

それで:

public void addTextBlock(double length, double width, double height) {
    Shape shape = shapecontrol.makeBlock(length, width, height);
    InfoShapeTextArea.append(shape.toString() + "\n");
}
于 2013-09-18T14:35:45.880 に答える