2016-12-20 2 views
0

Я создаю виджет, который до сих пор имеет монитор батареи и часы. Я попытался добавить круг за монитором батареи, чтобы он выглядел как форма батареи. Я попытался изменить значения положения круга, но он не движется. следующая картина показывает, что я получаю сейчас и ожидаемый эффектКруг не перемещается в JavaFX

image

Вот мой код для круга:

   stack = new StackPane(); 
       Text text2 = new Text(); 
       Circle circle = new Circle(10, 10, 10, Color.BLACK); 

       batteryBar = new ProgressBar(); 
       batteryBar.setPrefHeight(27); 
       batteryBar.setId("battery"); 

       stack.getChildren().addAll(batteryBar, text2, circle); 
       text2.setFont(new Font("Arial", 15)); 
       text2.setStyle("-fx-font-weight: bold;"); 
       text2.setFill(Color.WHITE); 
+0

Вы пробовали движущуюся его с 'Setx()' и 'сеты()'? –

+1

Я считаю, что [этот ответ] (http://stackoverflow.com/a/21124395/2988730) поможет вам (на [этот вопрос] (http://stackoverflow.com/q/21118394/2988730)). –

ответ

1

Вы можете легко установить X и Y координаты Круга с методами setX() и setY(). Вы также можете рассмотреть setLayoutX() и setLayoutY() которые устанавливают x и y координаты относительно Layout

Также Обратите внимание, что StackPane нельзя использовать здесь. Вы должны использовать Pane для установки оси x и y.

Это потому, что StackPane переопределяет все значения x и y. Чтобы узнать больше об этом, проверить этот стек переполнение question

Здесь будет ваш окончательный код: -

  pane= new Pane(); 
      Text text2 = new Text(); 
      Circle circle = new Circle(10, 10, 10, Color.BLACK); 
      circle.setLayoutX(10); 
      circle.setLayoutY(10); 
      batteryBar = new ProgressBar(); 
      batteryBar.setPrefHeight(27); 
      batteryBar.setId("battery"); 

      pane.getChildren().addAll(batteryBar, text2, circle); 
      text2.setFont(new Font("Arial", 15)); 
      text2.setStyle("-fx-font-weight: bold;"); 
      text2.setFill(Color.WHITE);