JavaFX CSS 不工作
JavaFX CSS not working
我在处理此示例时遇到问题,因为它没有将背景边框窗格设置为绿色。 css 无论我怎么调整它都没有任何效果。
我的代码:
WhosebugQuestion.scala
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.Scene
import scalafx.scene.control.Button
import scalafx.scene.layout.BorderPane
object WhosebugQuestion extends JFXApp {
stage = new PrimaryStage {
title = "Whosebug Sample"
scene = new Scene {
stylesheets add getClass.getResource("app.css").toExternalForm
content = new BorderPane {
id = "background"
center = new Button {
text = "Button"
}
}
}
}
}
app.css
#background {
-fx-background-color: green;
}
我确实看到了这个相关的 post 但它没有答案
JavaFx Css not working with eclipse。我知道 css 正在被读取,因为如果我从 css
中删除大括号,它会打印错误
希望对你有所帮助
package application;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Whosebug extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
primaryStage.setTitle("JavaFX Welcome");
BorderPane pane = new BorderPane();
pane.setId("pane");
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
scene.getStylesheets().add(Welcome.class.getResource("application.css").toExternalForm());
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
#pane{
-fx-background-color: green;
}
看着你的原始代码。布局问题比 CSS 更有可能。窗格被按钮覆盖,因此您看不到它。您需要确保窗格大于按钮,例如,为您添加填充 CSS:
#background {
-fx-background-color: green;
-fx-padding: 10;
}
这是我这样做时看到的:
您可能想要做的第二件事是将 content
更改为 root
,这样您的窗格将填充 Scene
,您将拥有
root = new BorderPane { ...
当您使用 root
时,您会直接在场景中放置一个窗格。限制是您只能将 Parent
分配给 root
(这里没有问题)。当您使用 content
时,您可以分配任何 Node
,但在分配给 root
之前,它首先被包装到 Group
中。在 Group
中包装会改变布局的完成方式,在您的情况下,将 BorderPane
的大小限制为其内容,而不是将其拉伸以匹配 Scene
大小。
我在处理此示例时遇到问题,因为它没有将背景边框窗格设置为绿色。 css 无论我怎么调整它都没有任何效果。 我的代码:
WhosebugQuestion.scala
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.Scene
import scalafx.scene.control.Button
import scalafx.scene.layout.BorderPane
object WhosebugQuestion extends JFXApp {
stage = new PrimaryStage {
title = "Whosebug Sample"
scene = new Scene {
stylesheets add getClass.getResource("app.css").toExternalForm
content = new BorderPane {
id = "background"
center = new Button {
text = "Button"
}
}
}
}
}
app.css
#background {
-fx-background-color: green;
}
我确实看到了这个相关的 post 但它没有答案 JavaFx Css not working with eclipse。我知道 css 正在被读取,因为如果我从 css
中删除大括号,它会打印错误希望对你有所帮助
package application;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Whosebug extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
primaryStage.setTitle("JavaFX Welcome");
BorderPane pane = new BorderPane();
pane.setId("pane");
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
scene.getStylesheets().add(Welcome.class.getResource("application.css").toExternalForm());
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
#pane{
-fx-background-color: green;
}
看着你的原始代码。布局问题比 CSS 更有可能。窗格被按钮覆盖,因此您看不到它。您需要确保窗格大于按钮,例如,为您添加填充 CSS:
#background {
-fx-background-color: green;
-fx-padding: 10;
}
这是我这样做时看到的:
您可能想要做的第二件事是将 content
更改为 root
,这样您的窗格将填充 Scene
,您将拥有
root = new BorderPane { ...
当您使用 root
时,您会直接在场景中放置一个窗格。限制是您只能将 Parent
分配给 root
(这里没有问题)。当您使用 content
时,您可以分配任何 Node
,但在分配给 root
之前,它首先被包装到 Group
中。在 Group
中包装会改变布局的完成方式,在您的情况下,将 BorderPane
的大小限制为其内容,而不是将其拉伸以匹配 Scene
大小。