Как поместить фигуру в фоновом режиме в JavaFX? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытался добавить цвет фона в мое приложение, и кто-то научил меня создавать фигуру (прямоугольник), устанавливать ее цвет и помещать ее в фон.Я создал прямоугольник, но я не знаю, как установить его в качестве фона.Как я могу сделать это, используя только 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();
}

}

С помощью этого кода я, очевидно, помещаю прямоугольник поверх всех кнопок и прочего.Я должен исправить это.

1 Ответ

0 голосов
/ 13 декабря 2018

Если целью прямоугольника является просто установить какой-либо цвет в качестве фона, тогда вы можете установить цвет фона по умолчанию для самой сцены при ее инициации.В Scene есть несколько конструкторов для установки заливки.Примерно так: ..

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, чтобы получить некоторую базовую идею.,Это поможет в принятии хороших дизайнерских решений.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...