2016-10-12 6 views
0

в приведенном ниже коде, когда я использую только строку 54 (комментарий в строке 55), она отлично работает. Но когда я исполняю с линией 55 в действии, я получаю эту ошибкуОшибка JavaFx при передаче массива в root.getChildren(). Add()

, вызванные: добавлены дублирующие детей:: java.lang.IllegalArgumentException: Дети родитель = Pane @ 16d2d0b

Image white = new Image("/javafxapplication1/white.png"); 
    ImageView whiteView = new ImageView(white); 

    Image red = new Image("/javafxapplication1/red.png"); 
    ImageView redView = new ImageView(red); 

    ImageView[] whiteArray = new ImageView[3]; 
    ImageView[] redArray = new ImageView[3]; 

    //the points of columns int the board map 
    int[][] whitepoints={{54,27},{235,27},{417,27}}; 
    int[][] redpoints={{145,27},{325,27},{507,27}}; 

      whiteArray[0]=whiteView; 
      whiteArray[0].setLayoutX(whitepoints[0][0]); 
      whiteArray[0].setLayoutY(whitepoints[0][1]); 

      whiteArray[1]=whiteView; 
      whiteArray[1].setLayoutX(whitepoints[1][0]); 
      whiteArray[1].setLayoutY(whitepoints[1][1]); 

    Pane root = new Pane(); 

    imgView.fitWidthProperty().bind(primaryStage.widthProperty()); 
    imgView.fitHeightProperty().bind(primaryStage.heightProperty()); 
    root.getChildren().add(imgView); 

    54!!! root.getChildren().add(whiteArray[0]); 
    55!!! root.getChildren().add(whiteArray[1]); 

    Scene scene = new Scene(root); 

    primaryStage.setTitle("Backgammon!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

Спасибо !!!

+0

Сообщение об ошибке говорит вам проблема: вы добавляете тот же '' ImageView' к root' дважды , –

+0

довольно запутан с использованием ImageView [], что это работает как классический массив ...!? –

+0

Ну, да, что бы это было? Дело в том, что 'whiteArray [0]' и 'whiteArray [1]' относятся к одному и тому же объекту. –

ответ

1

В коде whiteArray[0] и whiteArray[1] оба относятся к одному экземпляру из ImageView (тот ранее называли whiteView). Вы не можете добавить один и тот же ImageView в граф сцены дважды.

Я думаю, что вы пытаетесь сделать, это один и тот же Image между двумя различных ImageView S:

Image white = new Image("/javafxapplication1/white.png"); 

Image red = new Image("/javafxapplication1/red.png"); 

// maybe the same problem with this in code you haven't shown??? 
ImageView redView = new ImageView(red); 

ImageView[] whiteArray = new ImageView[3]; 
ImageView[] redArray = new ImageView[3]; 

//the points of columns int the board map 
int[][] whitepoints={{54,27},{235,27},{417,27}}; 
int[][] redpoints={{145,27},{325,27},{507,27}}; 

whiteArray[0]=new ImageView(white); 
whiteArray[0].setLayoutX(whitepoints[0][0]); 
whiteArray[0].setLayoutY(whitepoints[0][1]); 

whiteArray[1]=new ImageView(white); 
whiteArray[1].setLayoutX(whitepoints[1][0]); 
whiteArray[1].setLayoutY(whitepoints[1][1]); 

Pane root = new Pane(); 

imgView.fitWidthProperty().bind(primaryStage.widthProperty()); 
imgView.fitHeightProperty().bind(primaryStage.heightProperty()); 
root.getChildren().add(imgView); 

root.getChildren().add(whiteArray[0]); 
root.getChildren().add(whiteArray[1]);