seticon libreria imagenes icon clase cargar java image button javafx resources

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.