包含ArrayList形状的ShapeFX类
public class ShapeFX {
private ArrayList<Shapes> shapes;
public ShapeFX () {
this.shapes= new ArrayList<>();
}
public ShapeFX (ArrayList<Shapes> shapes) {
this.shapes= shapes;
}
public ArrayList<Shapes> getShapes() {
return this.shapes;
}
public void setShapes(ArrayList<Shapes> shapes) {
this.shapes= shapes;
}
@Override
public int size() {
return this.shapes.size();
}
@Override
public void add(Shapes element) {
this.shapes.add(element);
}
@Override
public void remove(Shapes element) {
if (element != null) {
this.shapes.remove(element);
}
}
@Override
public String toString() {
StringBuilder str = new StringBuilder();
Iterator itr = this.formaGeometricas.iterator();
while (itr.hasNext()) {
str.append(itr.toString());
}
return str.toString();
}
}
这里我只是JavaFX中两个事件的一个小例子,按钮创建形状和删除形状,只有方法添加(形状元素)它有效,方法删除(形状元素)不起作用,因为在创建形状后,当我尝试删除形状时,我收到消息 DOESN'T存在任何形状
//in JavaFX
ShapesFX shapesFX = new ShapesFx();
ObservableArrayList<String> options = FXCollections.observableArrayList(
"Circle", "Triangle");
ComboBox<String>comboBox = new ComboBox<>(options);
Button btnCreate = new Button("Create Shapes");
btnCreate.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
//here is function very well
Object items = comboBox.getSelectionModel().getSelectedItem();
if (items.equals("Circle")) {
Point2D p1 = new Point2D(0, 0);
//public class Circle extends Shapes
shapesFX.add(new Circle(p1, Color.BLACK, Float.valueOf(radiusTextField.getText())));
} else if (items.equals("Triangle")) {
Point2D p2 = new Point2D(0, 0);
//public class Triangle extends Shapes
shapesFX.add(new Triangle(p2, Color.BLACK, Float.valueOf(sizeTextField.getText())));
}
});
当我尝试在ListView中选择项目时(Shapes shape = list.getSelectionModel()。getSelectedItem();)或错误在ObservableList中,listShapes = FXCollections .observableArrayList(的 shapesFX.getShapes());
//or the error is here when I made (shapesFX.getShapes())
final ObservableList<Shapes> listShapes = FXCollections.observableArrayList(shapesFX.getShapes());
final ListView<Shapes> list = new ListView<>(listShapes);
Button btnRemove = new Button("Remove Shapes");
btnRemove.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
// or the error is here
Shapes shape = list.getSelectionModel().getSelectedItem();
if (shape != null) {
shapesFX.remove(shape);
} else {
System.out.println("DOESN´T EXIST ANY SHAPES");
}
}
})
插入数据并单击 btnCreate 以创建形状后,在此部分中将成功创建形状。
但是当我点击 btnRemove 删除创建的形状时,当我这样做 Shapes shape = list.getSelectionModel()。getSelectedItem(); 来浏览和选择要清理的形状,而不是像(forms!= null)那样返回不同于null的形状,形状将返回null(然后显示消息 DOESN'T存在任何形状),好像没有创建形状