Целочисленный массив отображения Java FX в TableView

Шимон Бонецкий

У меня проблемы с отображением целочисленного массива в столбце C2 в TableView. В tableView я получаю что-то вроде этого [Ljava.lang.Integer: @ 3a9e316b]. Я думаю, что проблема связана с cellValueFactory, но теперь я не знаю, как я могу решить эту проблему.

Вот мой контроллер

public class FXMLDocumentController implements Initializable {
    private JavaFXApplication4 mainApp;
    double orgSceneX, orgSceneY;
    double orgTranslateX, orgTranslateY;
    public List<Krawendzie> list = new ArrayList<Krawendzie>();
    @FXML
    private TableColumn C1;
    @FXML
     private TableColumn C2;
    @FXML
    private TableView<Krawendzie> laczenie;
    @FXML
    private Label label;
    @FXML
    private ComboBox<String> combo;
    @FXML
    private Pane Scena;
    @FXML

    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        Clipboard clipboard = Clipboard.getSystemClipboard();
        C1.setCellValueFactory(new PropertyValueFactory<Krawendzie,Integer>("Wezel"));
        C2.setCellValueFactory(new PropertyValueFactory<Krawendzie,Integer>("Mozliwosci"));
        laczenie.getSelectionModel().setCellSelectionEnabled(true);
        laczenie.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
            @Override
            public void changed(ObservableValue observable, Object oldValue, Object newValue) {

            }
        });
        combo.getItems().addAll("2","3","4","5","6","7","8");
        list.removeAll(list);
    }
    @FXML
    private void itemselected(ActionEvent event){
    }


     @FXML
    private void rysuj(ActionEvent event) {
        rysuj2(Integer.parseInt(combo.getValue()));
      //  RysowanieKrawendzi();
    }
    private void RysowanieKrawendzi()
    {
      DoubleProperty xValue = new SimpleDoubleProperty();
      Circle circle = list.get(7).getCircle();
      xValue.bind(circle.centerXProperty());
      Point2D x = circle.localToScene(Point2D.ZERO);
    }
    private void rysuj2(Integer Ilosc){
        list.removeAll(list);
        Scena.getChildren().clear();
        File f = new File("././Image/Imapges1.jpg");
        Image image = new Image(f.toURI().toString());
        Integer ilosc = 0;`enter code here`
        Integer [] moz = new Integer[Ilosc];
        for (int i = 0; i<Ilosc;i++)
        {
                    for (int m = 0; m<Ilosc; m++)
                    {
                           moz[m] = Integer.valueOf(m);
                    }
                    Circle circle = new Circle(20 * (i+1), 20* (i+1), 20);
                    circle.setFill(new ImagePattern(image));
                    circle.setCursor(Cursor.HAND);
                    circle.setOnMousePressed(new EventHandler<MouseEvent>() {
                        @Override
                        public void handle(MouseEvent t) {
                            orgSceneX = t.getSceneX();
                            orgSceneY = t.getSceneY();
                            orgTranslateX = ((Circle)(t.getSource())).getTranslateX();
                            orgTranslateY = ((Circle)(t.getSource())).getTranslateY();
                        }
                    });
                    circle.setOnMouseDragged(new EventHandler<MouseEvent>(){
                        public void handle(MouseEvent t)
                        {

                        double offsetX = t.getSceneX() - orgSceneX;
                        double offsetY = t.getSceneY() - orgSceneY;
                        double newTranslateX = orgTranslateX + offsetX;
                        double newTranslateY = orgTranslateY + offsetY;

                        ((Circle)(t.getSource())).setTranslateX(newTranslateX);
                        ((Circle)(t.getSource())).setTranslateY(newTranslateY);  
                        }
                    });
                    Scena.getChildren().add(circle);
                   // Scena.setClip(circle);
                    list.add(new Krawendzie(ilosc,circle,moz));
                    ilosc++;

        }
        getData();
    }
      public void getData()
    {
        ObservableList<Krawendzie> obsList = FXCollections.observableArrayList(list);
        laczenie.setItems(obsList);
    }
}

Вот класс

public class Krawendzie {

private Integer Wezel;
private Integer[] Mozliwosci;
private Circle circle;
    public Integer getWezel() {
        return Wezel;
    }

    public void setCircle(Circle circle) {
        this.circle = circle;
    }

    public Circle getCircle() {
        return circle;
    }

    public Integer[] getMozliwosci() {
        return Mozliwosci;
    }

    public void setWezel(Integer Wezel) {
        this.Wezel = Wezel;
    }

    public void setMozliwosci(Integer[] Mozliwosci) {
        this.Mozliwosci = Mozliwosci;
    }
    Krawendzie(Integer Wezel)
    {
        this.Wezel = Wezel;
    }
    Krawendzie(Integer Wezel,Circle circle,Integer[] mozliwosci)
    {
        this.Wezel = Wezel;
        this.circle = circle;
        this.Mozliwosci = mozliwosci;
    }
}
Улук Бий

Вы можете использовать

C2.setCellValueFactory( 
     new Callback<TableColumn.CellDataFeatures<Krawendzie, Integer[]>, 
                           ObservableValue<String>>()
{
    @Override
    public ObservableValue<String> call( TableColumn.CellDataFeatures<Krawendzie, 
                                         Integer[]> p )
    {
        return new ReadOnlyStringWrapper( 
              Arrays.toString( p.getValue().getMozliwosci() ) 
        );
    }
} );

После получения p.getValue().getMozliwosci()целочисленного массива вы также можете просмотреть его и отобразить в другом формате.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章