J'ai ce bouton où quand je veux ajouter dynamiquement des images à mon AnchorPane, mais actuellement il ne fonctionne pas comme prévu. J'essaie de charger une image à l'intérieur de l'étiquette JavaFX, voici mon code.charger des images dynamiquement dans JavaFX à Anchorpane
FXMLDocumentController.java
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
public AnchorPane pane;
@FXML
private void handleButtonAction(ActionEvent event) throws IOException {
// BufferedImage image = ImageIO.read(new File("2d.png"));
Label label = new Label();
Image image = new Image(getClass().getResourceAsStream("2d.png"));
label = new Label("search", new ImageView(image));
pane.getChildren().addAll(label);
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
FXMLDocument.fxml
<AnchorPane id="AnchorPane" fx:id="AnchorPane" prefHeight="521.0" prefWidth="548.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111" fx:controller="testingcards.FXMLDocumentController">
<children>
<Button fx:id="button" layoutX="126" layoutY="90" onAction="#handleButtonAction" text="Click Me!" />
<Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
<Label layoutX="143.0" layoutY="366.0" prefHeight="121.0" prefWidth="69.0" text="Label" />
</children>
</AnchorPane>
Erreur
Exception dans le thread "JavaFX application Fil" java.lang.RuntimeException: java.lang .reflect.InvocationTargetException à javafx.fxml.FXMLLoader $ MethodHandler.invoke (FXMLLoader.java:1774) à javafx.fxml.FXMLLoader $ ControllerMethodEventHandler.handle (FXMLLoader.java:1657) à com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent (CompositeEventHandler .java: 86) à com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:238) à com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:191) à com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent (CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:58) à com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114) à com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56) à com.sun.javafx .event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114) à com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56) à com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl .java: 114) à com.sun.javafx.event.EventUtil.fireEventImpl (EventUtil.java:74) à com.sun.javafx.event.EventUtil.fireEvent (EventUtil.java:49) à javafx.event.Event.fireEvent (Event.java:198) à javafx.scene.Node.fireEvent (Node.java:8411) à javafx.scene.control.Button.fire (Button.java:185) à com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased (ButtonBehavior.java:182) à com.sun.javafx.scene.control.skin.BehaviorSkinBase $ 1.handle (BehaviorSkinBase.java:96) à com.sun.javafx.scene.control.skin.BehaviorSkinBase 1.handle $ (BehaviorSkinBase.java:89) à com.sun.javafx.event.CompositeEventHandler $ NormalEventHandlerRecord.handleBubblingEvent (CompositeEventHandler.java:218) à com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent (CompositeEventHandler.ja VA: 80) à com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:238) à com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent (EventHandlerManager.java:191) à com .sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent (CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java: 58) à com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114) à com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56) à com .sun.javafx.event.EventDispatchChainImpl.dispatchEvent (EventDispatchChainImpl.java:114) à com.sun.javafx.event.BasicEventDispatcher.dispatchEvent (BasicEventDispatcher.java:56) à com.sun.javafx.event.EventDispatchChainImpl .dispatchEvent (EventDispatchChainImpl.java:114) à com.sun.javafx.event.EventUtil.fireEventImpl (EventUtil.java:74) à com.sun.javafx.event.EventUtil.fireEvent (EventUtil.java:54) à javafx.event.Event.fireEvent (Event.java:198) au javafx.scene.Scene $ MouseHandler.process (Scene.java:3757) au javafx.scene.Scene $ MouseHandler.access $ 1500 (Scene.java: 3485) à javafx.scene.Scene.impl_processMouseEvent (Scene.java:1762) à javafx.scene.Scene $ ScenePeerListener.mouseEvent (Scene.java:2494) à com.sun.javafx.tk.quantum.GlassViewEventHandler $ MouseEventNotification.run (GlassViewEventHandler.java:380) à com.sun.javafx.tk.quantum.GlassViewEventHandler $ MouseEventNotification.run (GlassViewEventHandler.java:294) à java.security.AccessController.doPrivileged (native Method) à com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda $ 354 $ handleMouseEvent (GlassViewEventHandler.jav a: 416) à com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock (QuantumToolkit.java:389) à com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent (GlassViewEventHandler.java:415) à com.sun.glass.ui.View.handleMouseEvent (View.java:555) à com.sun.glass.ui.View.notifyMouse (View.java:937) à com.sun.glass.ui. win.WinApplication._runLoop (méthode native) à com.sun.glass.ui.win.WinApplication.lambda $ null $ 148 (WinApplication.java:191) à java.lang.Thread.run (Thread.java:745) causés par: java.lang.reflect.InvocationTargetException à sun.reflect.NativeMethodAccessorImpl.invoke0 (native Method) à s un.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java.lang.reflect.Method.invoke (Method.java:498) à sun.reflect.misc.Trampoline.invoke (MethodUtil.java:71) à sun.reflect.GeneratedMethodAccessor1.invoke (Source inconnue) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java. lang.reflect.Method.invoke (Method.java:498) au sun.reflect.misc.MethodUtil.invoke (MethodUtil.java:275) au javafx.fxml.FXMLLoader $ MethodHandler.invoke (FXMLLoader.java:1769) ... 48 plus causés par: java.lang.NullPointerException à testingcards.FXMLDocumentController.handleButtonAction (FXMLDocumentController.java:46)
J'utilise NetBeans IDE
Au lieu de _replacing_ le 'Label', pourquoi ne pas _update_ le' ImageView' en utilisant 'setImage()'? – trashgod
'public AnchorPane volet;' n'est pas marqué avec l'annotation '@ FXML', il n'est donc pas inséré par le chargeur, il est donc nul, d'où le' NullPointerException'. En outre, le chargement de l'image peut également provoquer. – DVarga
@trashgod j'ai essayé cela comme Aza Suhaza a dit, mais n'a pas fonctionné, quelle sera la raison? – Kaw123