0

我在使用此示例时遇到问题,没有将背景边框设置为绿色。无论我如何调整 CSS,它都没有任何效果。我的代码:

StackoverflowQuestion.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 StackoverflowQuestion extends JFXApp {

   stage = new PrimaryStage {
      title = "Stackoverflow Sample"

      scene = new Scene {
         stylesheets add getClass.getResource("app.css").toExternalForm

         content = new BorderPane {
            id = "background"

            center = new Button {
               text = "Button"
            }
         }
      }
   }
}

应用程序.css

#background {
    -fx-background-color: green;
}

我确实看到了这个相关的帖子,但它没有答案 JavaFx Css not working with eclipse。我知道正在读取 css,因为如果我从 css 中删除大括号,它会打印错误

4

2 回答 2

1

我希望这会帮助你

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 StackOverFlow 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;
}

于 2015-04-22T14:42:33.027 回答
1

看着你的原始代码。与 CSS 相比,布局更可能出现问题。该窗格被按钮覆盖,因此您看不到它。您需要确保窗格大于按钮,例如,为您的 CSS 添加填充:

#background {
    -fx-background-color: green;
    -fx-padding: 10;
}

这是我这样做时看到的:

带填充和绿色背景的按钮

您可能想做的第二件事是更改contentroot,这样您的窗格将填满Scene,您将拥有

root = new BorderPane { ...

使用时,root您将窗格直接放在场景中。限制是您只能分配一个Parentroot(这里没问题)。使用时,content您可以分配任何Node内容,但Group在分配给之前先将其包装到 a 中root。包装Group改变了布局的完成方式,在您的情况下,限制BorderPane其内容的大小,而不是拉伸它以匹配Scene大小。

于 2015-04-23T00:55:53.060 回答