在ListView <items>中选择项目并在JavaFX中返回null </items>

时间:2014-06-27 14:20:44

标签: java javafx

包含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存在任何形状),好像没有创建形状

0 个答案:

没有答案