Java程序。使用最新版本的eclipse和java。程序正常工作,但是我不明白为什么我看不到钟摆底部的圆。程序应该把钟摆显示为一条连接顶部和底部圆圈的线。我已经尝试了setFill()和setStroke()代码,但仍然无法解决这个问题...可能是一些小而简单的东西,但我错过了。请让我知道什么在我面前!
import javafx.animation.PathTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Ch15PA2 extends Application {
public void start(Stage primaryStage) {
BorderPane pane = new BorderPane();
VBox vbox = new VBox();
pane.getChildren().add(vbox);
Pendulum pendulum = new Pendulum(500, 300);
pane.setCenter(pendulum);
Scene scene = new Scene(pane,500,500);
primaryStage.setTitle("Chapter 15 Programming Assignemnt 2");
primaryStage.setScene(scene);
pendulum.resume();
primaryStage.show();
scene.setOnKeyPressed(e -> {
switch (e.getCode()) {
case UP: pendulum.increase(); break;
case DOWN: pendulum.decrease(); break;
case R: pendulum.resume(); break;
case S: pendulum.stop(); break;
}
});
}
public static void main(String[] args) {
launch(args);
}
}
class Pendulum extends Pane {
private double w=300;
private double h;
PathTransition pt;
Circle topCircle = new Circle();
Circle bottomCircle = new Circle();
Line line;
Arc arc;
public Pendulum(double width,double height) {
w = width;
h = height;
arc = new Arc(w/2,h*.8,w*.15,w*.15,180,180);
topCircle = new Circle(arc.getCenterX()-arc.getRadiusX(),arc.getCenterY(),10);
bottomCircle = new Circle(arc.getCenterX(),arc.getCenterY()-h/2,bottomCircle.getRadius()/2);
arc = new Arc(topCircle.getCenterX(),topCircle.getCenterY(),w/2,h/2,240,60);
arc.setFill(Color.TRANSPARENT);
line = new Line(topCircle.getCenterX(),topCircle.getCenterY(),bottomCircle.getCenterX(),bottomCircle.getCenterY());
pt = new PathTransition();
pt.setDuration(Duration.seconds(2.0));
pt.setPath(arc);
pt.setNode(bottomCircle);
pt.setOrientation(PathTransition.OrientationType.NONE);
pt.setCycleCount(PathTransition.INDEFINITE);
pt.setAutoReverse(true);
topCircle.setStroke(Color.BLACK);
topCircle.setFill(Color.BLACK);
bottomCircle.setStroke(Color.BLACK);
bottomCircle.setFill(Color.BLACK);
line.setStroke(Color.BLACK);
line.endXProperty().bind(bottomCircle.translateXProperty().add(bottomCircle.getCenterX()));
line.endYProperty().bind(bottomCircle.translateYProperty().add(bottomCircle.getCenterY()));
getChildren().add(line);
getChildren().add(bottomCircle);
getChildren().add(topCircle);
getChildren().add(arc);
}
public void increase() {
pt.setRate(pt.getRate()+1);
}
public void decrease() {
pt.setRate(pt.getRate()-1);
}
public void resume() {
pt.play();
}
public void stop() {
pt.stop();
}
}
您将bottomCircle的半径设置为零。
首先你要:
Circle bottomCircle = new Circle();
它创建了一个带有
centerX=0
、centerY=0
和(重要的是)半径=0
的圆圈。然后在构造函数中您执行:
bottomCircle = new Circle(arc.getCenterX(),arc.getCenterY()-h/2,bottomCircle.getRadius()/2);
由于
底部圆圈.getRadius()
返回 0
,因此这会将底部圆圈
重新初始化为半径为 0 的圆。由于半径为零,因此没有实际的圆可看。
由于您唯一的构造函数同时初始化
topCircle
和 bottomCircle
,因此将它们与它们的声明内联初始化是没有意义的(因为无论如何,您只需立即替换这些对象)。只需将它们声明为
Circle topCircle;
Circle bottomCircle;
这将为您的当前代码提供一个空指针异常,提醒您将
bottomCircle.radius
设置为bottomCircle.radius/2
几乎肯定不是您想要做的。
一般来说,给某个值赋值,然后立即给它另一个值是令人困惑的。你可以这样做
class Pendulum extends Pane {
private double w;
private double h;
PathTransition pt;
Circle topCircle;
Circle bottomCircle;
Line line;
Arc arc;
public Pendulum(double width,double height) {
w = width;
h = height;
// arc = new Arc(w/2,h*.8,w*.15,w*.15,180,180);
topCircle = new Circle(w/2-w*.15,h*.8,10);
bottomCircle = new Circle(w/2,h*.8-h/2,5);
arc = new Arc(topCircle.getCenterX(),topCircle.getCenterY(),w/2,h/2,240,60);
arc.setFill(Color.TRANSPARENT);
// ...
}
// ...
}
我在第一个场景上有一个简单的按钮,应该会导致第二个场景。当我点击按钮时,它改变场景,但只显示一个空白屏幕。如果我关闭原始舞台,然后显示一个包含新场景的新舞台,它会正常工作,但我不想打开一个新窗口。 这是我的控制器类: 主类:
我为浏览按钮下载了一个图像。我把它放在maven项目中的src/main/Resources文件夹中。在我的Browse Action中,这里是我的类代码: 问题是,当我试图通过Browse.class.getResource(…)访问图像时,构造函数中会出现空值。我尝试过在文件名之前使用“/”,但在文件名中没有它-也只是空文件名,我得到了相同的结果。这是我的pom文件: 我不知道错误是否在我的p
以前它工作正常,但现在一切都很慢,而且我没有看到TextField,在层次结构中选择游戏对象时,在编辑器窗口中显示它需要将近5秒的时间。 在此之前,一切都很快,并在编辑器窗口中显示整个层次结构。 现在它是空的: 我从这个问题中得到了答案: 可通过计算机搜索的
这是:“Parent root=fxmlloader.load(getClass().getResource(”sample.fxml“));” 我不明白剩下的部分,所以我希望你能轻松地解决这个问题:)
当我运行(Windows 7命令行)时: C:\rest-app\src\main\java\com\mycompany\app\test>java org.testng.testng testng.xml Suite1运行的测试总数:0,失败:0,跳过:0 ================================================== 此时我的testng.xml文件如下所
我已经使用开发人员沙盒帐户构建了一个集成。我最近将我的应用程序升级为live,并将我的生产环境配置为使用新的集成id和secret以及live Docusign url。 但是,当我尝试在应用程序的帐户中创建oauth连接时,我的服务器会获取一个代码,将客户端重定向到Docusign以进行身份验证,但Docusign登录屏幕显示错误“没有向Docusign注册的重定向URI”。事实并非如此-我的开