java - 如何在 JavaFX 中将形状置于背景中?

标签 java javafx

我一直在尝试在我的应用程序中添加背景颜色,有人教我创建一个形状(矩形),设置其颜色并将其放在背景中。我已经创建了矩形,但我不知道如何将其设置为背景。我怎样才能仅使用 JavaFX 来做到这一点?

import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.geometry.Insets;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.scene.shape.*;
import java.io.FileNotFoundException;
import java.io.FileInputStream;

public class Testes extends Application {

Stage j;
Scene c1, scene2;
Button b1;
Pane l1;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws FileNotFoundException {
    j = primaryStage;
    j.setMaximized(true);

    Image image = new Image(new FileInputStream("/home/jenisson/Imagens/mpba.jpg"));  
    ImageView imageView = new ImageView(image); 
    imageView.setX(600); 
    imageView.setY(10); 

    //setting the fit height and width of the image view 
    imageView.setFitHeight(90); 
    imageView.setFitWidth(150); 

    //Button 1
    Button b1 = new Button("+");
    b1.setLayoutX(10);
    b1.setLayoutY(110);

    //Button 2
    Button b2 = new Button("Consultar");
    b2.setLayoutX(50);
    b2.setLayoutY(140);

    Pane l1 = new Pane ();
    l1.getChildren().addAll(b1, b2);
    c1 = new Scene(l1);
    l1.getChildren().addAll(imageView);

    TextField consulta = new TextField();
    l1.setPadding(new Insets(10));
    l1.getChildren().add(consulta);
    consulta.setLayoutX(50);
    consulta.setLayoutY(110);

    Rectangle r = new Rectangle(0, 0, 1366, 1366);
    r.setFill(Color.WHITE);
    l1.getChildren().addAll(r);

    //Display scene 1 at first
    j.setScene(c1);
    j.setTitle("Controle de processos - 1ª Promotoria de Justiça");
    j.show();
}

}

通过这段代码,我显然将矩形放在所有按钮和其他东西的顶部。我必须纠正这一点。

最佳答案

如果矩形的目的只是将某种颜色设置为背景,那么您可以在启动场景时将默认背景颜色设置为场景本身。场景有一些构造函数来设置填充。类似的东西,..

c1 = new Scene(l1, Color.WHITE);

或者在您的示例中,您可以将 StackPane 设置为场景的根节点,并设置 StackPane 的背景颜色。

StackPane root = new StackPane();
root.setStyle("-fx-background-color:white;");
root.getChildren().add(l1);
c1 = new Scene(root);

或者,如果您有其他原因需要使用 Shape,那么您可以将 Shape 设置为 StackPane 的第一个子项。

StackPane root = new StackPane();
Rectangle r = new Rectangle(0, 0, 1366, 1366);
r.setFill(Color.WHITE);
root.getChildren().addAll(r,l1);
c1 = new Scene(root);

我建议您浏览所有 JavaFX 布局以获得一些基本概念。这将有助于做出一些好的设计决策。 :)

关于java - 如何在 JavaFX 中将形状置于背景中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53753584/

相关文章:

java - 使用 Jsoup 从表格和网站的所有选项卡获取链接

java - Servlet 中的线程和并发

JavaFX:如果内部有项目,SplitPane 会在调整大小时更改分隔线位置

java - 如何同步Java和JavaFX线程?

java - 如何在 selenium webdriver 中使用 css 检查按钮是否被禁用

java - 从输入/文本文件中查找所有奇数和偶数的平均值

java - spring mvc和spring boot之间web开发我应该学习哪一个

java - 为什么我无法使用 Controller 传递值并在场景中显示?

java - 插入 blob 作为数据类型时出现数据截断错误

javafx-2 - 关闭选项卡时确认对话框窗口