我对Java比较新,我在运行程序时遇到了困难。现在,作为一个抬头,这是一个家庭作业。问题是在一个圆圈中创建一个输出为“欢迎使用Java”的程序。
到目前为止,这是我的代码:
import java.awt.Color;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Parent;
import javafx.scene.layout.Pane;
import javafx.scene.text.*;
import javafx.stage.Stage;
public class Characters extends Application {
public void start(Stage stage) {
Pane canvas = new Pane();
canvas.setStyle("-fx-background-color: black;");
canvas.setPrefSize(200, 200); // set size of pane
Font f = Font.font("Times New Roman", FontWeight.BOLD, 35);
String s = "Welcome to Java";
String c;
double d = 25.0, x = 10.0, y = 20.0;
for (int i = 0; i < s.length(); i++) {
c = "" + s.charAt(i);
Text t = new Text(x, y, c);
t.setFont(f);
t.setRotate(d);
d++;
x++;
y++;
canvas.getChildren().add(t);
}
Scene scene = new Scene(root,500, 500, Color.BLACK);
stage.setTitle("Characters around a circle");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我一直在Scene scene = new Scene(root,500, 500, Color.BLACK);
收到错误,但我找不到解决方法。任何帮助表示赞赏。感谢。
答案 0 :(得分:0)
root
未在您的程序中的任何位置声明。尝试将canvas
添加到布局中,然后将布局添加到场景中。
BorderPane rootLayout = new BorderPane();
rootLayout.getChildren().add(canvas);
Scene scene = new Scene(rootLayout, 500,500);
答案 1 :(得分:0)
它看起来不像root
(构造函数中的第一个参数)在作用域中的任何位置定义。
在文档中他们这样做:
Group root = new Group();
Scene s = new Scene(root, 300, 300, Color.BLACK);
但我不确定你是否想要放在canvas
的某个地方。
需要注意的事项(从docs复制粘贴):
应用程序必须通过设置root属性为场景图指定根节点。如果使用组作为根,则场景图的内容将被场景的宽度和高度剪切,并且更改为场景的大小(如果用户调整舞台大小)将不会更改场景图的布局。如果可调整大小的节点(布局区域或控件设置为根,则根的大小将跟踪场景的大小,导致内容在必要时被中继。
基本上,如果您希望在Scene
内强制使用组件,则看起来您需要Group
。如果您希望组件更改Scene
的大小,请使用可调整大小的节点(例如Region
或Control
)。