2015-09-03 33 views
0

我在TableView的C2列中顯示Integer數組時遇到了一些問題。在tableView中,我得到了這樣的東西[Ljava.lang.Integer:@ 3a9e316b]。我認爲麻煩與cellValueFactory,但我現在不知道如何解決這個問題。Table FX中的FX FX顯示整數數組

這裏是我的控制器

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; 
    } 
} 

回答

0

您可以使用

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()整數數組後,您還可以穿越它,並顯示在不同的格式。

+0

它的工作非常感謝你。可以在其他單元格中顯示此數組中的每個索引? –

+0

@szymonbonecki其他細胞?這些單元格中已有的數據會發生什麼? –

+0

我是指從talbeView的單獨數據庫中的數據得到的每個數據,因爲現在來自數組的所有數據都顯示在一個單元中,如[0,1,2,3] –