Я пытаюсь выучить Java по курсу Udemy, и меня попросили создать задание, прежде чем переходить к следующим разделам.
Задача состоит в том, чтобы написать приложение JavaFX, которое отображает круг и кнопку, и каждый раз, когда указанная кнопка нажимается, круг должен перемещаться в случайные места.
До сих пор я создал код, который подсчитывает, сколько раз я нажал кнопку, теперь я хотел бы переместить круг вместе с подсчетом:
public class CircleJumper extends Application {
// Declare Variables
private int count;
private Circle initCircle;
private Button initButton;
private Text countText;
/*
*
* Write function here
*
*/
@Override
public void start(Stage primaryStage){
// Initiate Variables
count = 0;
initCircle = new Circle(30, -50, 30);
initButton = new Button("Click Me!");
countText = new Text("Clicks: 0");
// Here its where I built the click counter
initButton.setOnAction((event) -> {
count++;
countText.setText("Pushes: " + count);
});
;
Group baseDemo = new Group(initButton, countText);
FlowPane pane = new FlowPane(baseDemo, initCircle);
pane.setAlignment(Pos.CENTER);
pane.setHgap(20);
pane.setStyle("-fx-background-color: cyan");
Scene scene = new Scene(pane, 600, 300);
primaryStage.setTitle("Draw a Circle when Button is Pressed");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
launch(args);
}
}
ОБНОВЛЕНИЕ: я решил объявить свою переменную count = Math.random(); и создал круг. После этого нажатие кнопки должно получить сгенерированный Math.random и поместить его в setTranslate, я прав?
public void start(Stage primaryStage){
// Initiate Variables
count = Math.random();
initCircle = new Circle(30, 50, 30);
initButton = new Button("Click Me!");
Group circlePos = new Group(initCircle);
circlePos.setTranslateX(10);
circlePos.setTranslateY(10);
initButton.setOnAction((event) -> {
count++;
circlePos.setTranslateY(count);
circlePos.setTranslateX(count);
});
Group baseDemo = new Group(initButton);
FlowPane pane = new FlowPane(baseDemo, initCircle);
pane.setAlignment(Pos.CENTER);
pane.setHgap(20);
pane.setStyle("-fx-background-color: cyan");
Scene scene = new Scene(pane, 600, 300);
primaryStage.setTitle("Draw a Circle when Button is Pressed");
primaryStage.setScene(scene);
primaryStage.show();
}
Math#random()
илиjava.util.Random
. Первый возвращает значения в диапазоне[0.0,1.0)
, которые вы можете умножить на ширину/высоту родительского круга, чтобы получить новый центр x/y. У последнего есть метод, который может возвращать ограниченныеint
s (в диапазоне[0,bound)
). - person Slaw   schedule 19.09.2019