libreria - resize an image icon java
Crear imagen variable no funciona (1)
Así que escribo el siguiente código en eclipse:
package myProgram;
import com.sun.glass.ui.Screen;
import com.sun.prism.paint.Color;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application implements EventHandler<ActionEvent> {
Button btn1;
Button btn2;
Button btn3;
public float[] winSize = {200, 400};
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
VBox layout = new VBox(10);
layout.setAlignment(Pos.CENTER);
Scene scene = new Scene(layout, winSize[0], winSize[1]);
Rectangle2D rect = javafx.stage.Screen.getPrimary().getVisualBounds();
stage.setY(rect.getMinY() + rect.getHeight() - winSize[1]);
stage.setX(rect.getMinX() + rect.getWidth() - winSize[0]);
//Not working part below
Image imageDecline = new Image(getClass().getResourceAsStream("image.png"));
Button button5 = new Button();
button5.setGraphic(new ImageView(imageDecline));
//
btn1 = new Button("Close");
btn1.setOnAction(e -> stage.close());
btn1.setStyle("-fx-font: 20 arial");
layout.getChildren().add(btn1);
btn1.setMaxWidth(160);
System.out.print(System.getProperty("user.dir").toString());
btn2 = new Button("Open new Win");
btn2.setOnAction(e -> {
});
btn2.setStyle("-fx-font: 20 arial");
layout.getChildren().add(btn2);
btn2.setMaxWidth(160);
btn3 = new Button("Alert");
btn3.setOnAction(e -> {
});
btn3.setStyle("-fx-font: 20 arial");
layout.getChildren().add(btn3);
btn3.setMaxWidth(160);
stage.setScene(scene);
stage.show();
}
public void handle(ActionEvent event){
}
}
Pero funciona si elimino esta parte:
//Not working part below
Image imageDecline = new Image(getClass().getResourceAsStream("image.png"));
Button button5 = new Button();
button5.setGraphic(new ImageView(imageDecline));
//
Recibo el siguiente texto en la consola y el programa no se abre:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Input stream must not be null
at javafx.scene.image.Image.validateInputStream(Unknown Source)
at javafx.scene.image.Image.<init>(Unknown Source)
at myProgram.Main.start(Main.java:45)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(Unknown Source)
... 1 more
Exception running application myProgram.Main
¿Alguien tiene alguna idea de por qué este problema llega cuando intento crear una variable para mantener / referencia (no estoy seguro) una imagen con formato .png? Quiero cargar una imagen y está fuera de línea. Y no puedo entender cómo resolvería esto a partir de las respuestas en una pregunta similar, mi archivo me parece muy diferente.
Por lo general, no coincide entre el nombre del recurso solicitado y el recurso existente. Especialmente cuando no se menciona ninguna carpeta / paquete. Eclipse podría ver sus propios recursos pero la aplicación implementada puede no tenerlos.
Una solución simple para eliminar dicha ambigüedad sería tener una carpeta en sus recursos y usar este nombre directamente. Me gusta no image.png pero /images/image.png
Recomendaría comenzar el nombre del recurso desde la raíz para eliminar otras confusiones relativas.
Si todavía está confundido, le recomendaría que comience a investigar qué recursos tiene dentro de su aplicación. Enumere los recursos existentes o intente acceder a uno que crea que está aquí. Entonces tendrá excepción en su código y podrá ver fácilmente lo que está mal.