Pregunta

Estoy usando escena builder para crear mi GUI y estoy mostrando Images como a los usuarios seleccionar elementos en una lista.El Images son de diferentes tamaños, y cuando un Image que es menor que el panel está en la imagen se muestra en la parte superior izquierda del panel.¿Cómo puedo obtener el ImageView y/o Image para que se muestre en el centro de la Pane?

He mirado en todo el javafx imageview y la imagen de la Api, pero no he encontrado mucho sobre el centrado de la ImageViewen un Pane.No he visto nada en la escena del generador, ya sea.Por lo general en la escena del generador, si hay una manera de centro de un nodo, habrá una opción para el centrado.

¿Fue útil?

Solución

En cualquier tipo de panel que ahora es posible establecer la alineación de la imagen en específico posición..para ello se puede utilizar try HBox

cuando se inserta un Image en el HBox, inicialmente aparecen como el de abajo.

screenshot

ahora establece la propiedad de alineación de la HBox

screenshot

ahora cambie la alineación al centro y ver el resultado

screenshot

Espero su labor por usted

También es posible hacerlo mediante programación en un Pane a través de obtener la imagen

intente esto

AnchorPane anchorPane = new AnchorPane();
Image img = new Image(getClass().getResourceAsStream("Edit-Male-User-icon.png"));
ImageView imageView = new ImageView(img);
anch.getChildren().add(imageView );
ImageView app = (ImageView) (Node) anchorPane.getChildren().get(0);
app.setX(100);
app.setY(100);

Otros consejos

Crear un Group y la escena en su método de inicio:

Group root = new Group();
Scene scene = new Scene(root, 551, 400, Color.BLACK);
primaryStage.setScene(scene);

Crear un ImageView y establezca las siguientes propiedades:

ImageView imageView = new ImageView();
// set aspect ratio
imageView.setPreserveRatio(true);
// resize based on the scene
imageView.fitWidthProperty().bind(scene.widthProperty());
imageView.fitHeightProperty().bind(scene.heightProperty());

Crear un StackPane (al menos eso es lo que he usado) y se unen a sus propiedades:

StackPane stack = new StackPane();
stack.getChildren().add(imageView);

    stack.translateXProperty()
            .bind(scene.widthProperty().subtract(stack.widthProperty())
                    .divide(2));

    stack.translateYProperty()
            .bind(scene.heightProperty().subtract(stack.heightProperty())
                    .divide(2));

Agregar esta pila a raíz del elemento:

root.getChildren().add(stack);

Mostrar primaryStage y ejecutar otro código en el método de inicio:

primaryStage.show();

Una forma sencilla de hacer pequeñas imágenes de forma dinámica centrada en :

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class CenterInStage extends Application {

    private final String TITLE = "Center in Stage";
    private final double WIDTH = 350;
    private final double HEIGHT = 250;
    private final String IMAGE_PATH =
            "http://icons.iconarchive.com/icons/iconka/meow-2/64/cat-rascal-icon.png";

    @Override
    public void start(Stage primaryStage) {

        primaryStage.setTitle(TITLE);

        Image image = new Image(IMAGE_PATH);
        ImageView imageView = new ImageView(image);
        imageView.setPreserveRatio(true);

        StackPane pane = new StackPane();
        pane.getChildren().add(imageView);
        StackPane.setAlignment(imageView, Pos.CENTER);

        Scene scene = new Scene(pane, WIDTH, HEIGHT);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

enter image description here

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top