显然不是。有人可以帮我这个吗?我是JavaFX的初学者。
Analog_clock.java
package analog_clock;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
/**
*
* @author ishansrivastava
*/
public class Analog_clock extends Application {
@Override
public void start(Stage primaryStage) {
Circle circle = new Circle();
circle.setCenterX(100.0f);
circle.setCenterY(100.0f);
circle.setRadius(50.0f);
Group g = new Group();
g.getChildren().add(circle);
Pane bg = new Pane();
//bg.setBackground(new Background(new BackgroundFill("-fx-color: #ACACE6", null,null)));
bg.getChildren().add(g);
Scene scene = new Scene(bg, 300, 250);
scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show()cl;
}
public static void main(String[] args) {
launch(args);
}
}
的style.css
.Circle
{
-fx-stroke: #757575; /* sonic silver */
-fx-fill: #00CC99; /* caribbean green */
}
.pane
{
-fx-background-color: #ACACE6; /* maximum blue purple */
}
感谢您帮助我。
更新:
将我的css文件更改为:
.circle
{
-fx-stroke: #757575; /* sonic silver */
-fx-fill: #00CC99; /* caribbean green */
}
.root
{
-fx-background-color: #ACACE6; /* maximum blue purple */
}
我的背景似乎是紫色的,因为我的代码中没有任何名为 root 的内容。
答案 0 :(得分:1)
如果您设置id
&的circle
bg
,它应该有效:
circle.setId("circle");`
bg.setId("bg");
然后创建您的CSS
文件:
#circle{
-fx-stroke: #757575; /* sonic silver */
-fx-fill: #00CC99; /* caribbean green */
}
#bg{
-fx-background-color: #ACACE6; /* maximum blue purple */
}
关于root
这个词,我不太确定,但我认为它在JavaFX(特别是FXML
语言)中有特殊含义,这就是为什么它已被理解为您使用该名称定义了Pane bg
!但是,请查看How to understand and use <fx:root>
in JavaFX?它可能有所帮助。
答案 1 :(得分:1)
你可以像开始那样做,有一些你错过的点,可能你不明白造型如何与css一起使用。
首先,当您将syleSheet添加到Scene
时,这意味着您对场景说:看这里是您可以使用这些内容的样式表。因此,您不要将它们立即添加到背景,圆圈等组件中。
此外,虽然Circle是Node
,并且它实现了Styleable
,但您拥有方法getStyleClass()
,其中包含节点的所有样式(在本例中为Circle),如果你想添加一些新的样式,你可以简单地这样做:(例如对于圆圈)circle.getStyleClass().add("cirle");
当然,如果没有设置样式表,这将无效。
还有一件事,你可以为每个节点指定样式表,如果你想要,可以为Pane
使用一个样式表,为Circle
使用另一个样式表。但通常我们在父级使用样式表节点,然后分别为子项添加样式。
所以这就是你如何简单地使用造型。我希望这是可以理解的。
答案 2 :(得分:0)
scene.getStylesheets().add(Analog_clock.class.getResource("/style.css").toExternalForm());