我有一个由50个圆组成的数组,运行应用程序时可以显示它们。我觉得在尝试确定圆之间的距离时逻辑不正确,或者在进行比较后我没有正确设置颜色。
这是我的主圈子课程。分配要求之一是圆必须是其自己的单独类别。
for(let i=0 ; i<limit ; i++)
这是我的主要应用程序代码,我认为这是第二个for循环中存在问题的代码?
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package CircleJavier;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import java.util.Random;
import javafx.scene.paint.Paint;
import javafx.scene.transform.Scale;
import javafx.scene.shape.*;
/**
*
* @author javyc
*/
public class Circ extends Group {
Random rand = new Random();
int x = rand.nextInt(300);
int y = rand.nextInt(300);
int rad = rand.nextInt(35);
Paint fill = Color.RED;
public Circ()
{
Circle cockpit = new Circle();
cockpit.setCenterX(x);
cockpit.setCenterY(y);
cockpit.setRadius(rad);
cockpit.setFill(fill);
boolean addAll;
addAll = getChildren().addAll(cockpit);
}
}
答案 0 :(得分:0)
主要问题是您只是使用新值更新了涂料的参考。不适用于圈子。如果要在圆上应用,请在Circ中创建一个接受Paint并在圆上设置的方法。
public class Circ extends Group {
Random rand = new Random();
int x = rand.nextInt(300);
int y = rand.nextInt(300);
int rad = rand.nextInt(35);
Paint fill = Color.RED;
Circle cockpit;
public Circ() {
cockpit = new Circle();
cockpit.setStyle("-fx-stroke-width:1px;-fx-stroke:black;-fx-opacity:.5");
cockpit.setCenterX(x);
cockpit.setCenterY(y);
cockpit.setRadius(rad);
cockpit.setFill(fill);
getChildren().addAll(cockpit);
}
public void setFill(Color clr) {
cockpit.setFill(clr);
}
}
然后通过调用Circ的setFill设置填充。
circleArray[i].setFill(Color.AQUAMARINE);
circleArray[j].setFill(Color.CADETBLUE);
circleArray[i].setFill(Color.BLACK);
设置一些笔触和不透明度可以提供重叠的视觉反馈;)