2017-05-11 3 views
1

Ich habe eine Klasse namens "AdjustmentBar", die eine ImageView, eine Menüleiste und einige Bildbearbeitungsfunktionen (eine FXML-Datei und ein Controller) enthält. AdjustmentBar wird in eine andere Klasse namens "ExaminationDisplayer" (auch eine FXML-Datei und ein Controller) geladen. ExaminationDisplayer lädt einige Bilder aus einer Online-MySQL-Datenbank, und ich möchte, dass jedes dieser Bilder in einem separaten Bild angezeigt wird.Javafx setImage für ImageView von einem anderen FXML-Controller

Ich konnte die AdjustmentBar in den ExaminationDisplayer laden, aber ich kann nicht herausfinden, wie ImageImage() des imageView gesetzt wird, das in AdjustmentBar enthalten ist. Ich kann ein Bild von der Datenbank in einer Bildansicht anzeigen, die ich speziell im ExaminationDisplayer mache, und ich kann ein Bild in der AdjustmentBar-Ansicht anzeigen, wenn ich das separat ausführe. Ich kann die geladene Justierungsleiste nicht aufrufen, um das Bild im ExaminationDisplayer anzuzeigen.

Wenn ich es laufen bekomme ich einen Fehler Nullpointer für diese Codezeile: imgView.setImage (Bild), die in dem ExaminationDisplayerController ist:

public class ExaminationDisplayerController extends AdjustmentBarController { 
    @FXML 
    private void handlebtnFraminghamAction(ActionEvent event) throws IOException {showCardiacConditionEstimator(); } 
    @FXML 
    private AnchorPane anchorPane; 
    @FXML 
    private LineChart<Number, Number> lcChart; 
    @FXML 
    private NumberAxis xAxis; // x-Axis is defined 
    @FXML 
    private NumberAxis yAxis; //y-Axis is defined 

    public void initialize() throws ClassNotFoundException, SQLException, IOException { // Loading methods in ExaminationDisplayerController 
     SPECTLoad(); 
    } 

    public void showCardiacConditionEstimator() throws IOException { // Method for displaying CardiacConditionEstimator 
     Parent parent = FXMLLoader.load(getClass().getResource("/fxml/CardiacConditionEstimator.fxml")); //Reference to the fxml file 
     Stage stage = new Stage(); // creating a new stage 
     Scene scene = new Scene(parent); // creating a new scene for the file to be shown onto 
     stage.setScene(scene); // sets the scene on the stage 
     stage.show(); // Displaying the stage 
     stage.setMaximized(false); // maximizing the stage 
    } 

    public void SPECTLoad() throws SQLException, ClassNotFoundException { 
     DBConnection dbConn = new DBConnection(); 
     Connection conn = dbConn.connect(); 
     PreparedStatement pstmt = null; 

     try { 

      for (int numberOfExaminations = 0; numberOfExaminations < 3; numberOfExaminations++) { 

       String[] ID = {"1111", "1112", "1113"}; 
       List<String> chosenExaminations = Arrays.asList(ID); 
       String SQL = "SELECT `IMAGE` FROM `SPECT` WHERE `ID` = ?;"; 
       pstmt = conn.prepareStatement(SQL); 

       pstmt.setString(1, chosenExaminations.get(numberOfExaminations)); 

       ResultSet rs = pstmt.executeQuery(); 

       while (rs.next()) { 
        InputStream is = rs.getBinaryStream("IMAGE"); 
        OutputStream os = new FileOutputStream(new File("SPECT_IMAGE.jpg")); 

        byte[] content = new byte[1024]; 
        int size = 0; 
        while ((size = is.read(content)) != -1) { // Når inputstream er real passer den et -1 værdi og så stoppes loopet 
         os.write(content, 0, size); 
        } 
        os.close(); 
        is.close(); 

        Image image = new Image(new File("SPECT_IMAGE.jpg").toURI().toString(), 200, 200, true, true); 

        anchorPane.getChildren().add(FXMLLoader.load(getClass().getResource("/fxml/AdjustmentBar.fxml"))); 
        imgView.setImage(image); 
       } 
      } 

//} 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Hier ist der Code für AdjustmentBarController:

public class AdjustmentBarController { 

    @FXML 
    private AnchorPane AnchorPane; 
    @FXML 
    private ScrollPane ScrollPane; 
    @FXML 
    public ImageView imgView; 
    @FXML 
    private Slider contrastAdjuster; 
    @FXML 
    private ToggleButton btnMeasure; 
    @FXML 
    private Pane imgContainer; 
    @FXML 
    private Label txtLabel; 

    @FXML 
    private void btnZoomInAction(ActionEvent event) {...} 

    @FXML 
    private void btnZoomOutAction(ActionEvent event) {...} 

    @FXML 
    private void btnRotateRightAction(ActionEvent event) {...} 

    @FXML 
    private void btnRotateLeftAction(ActionEvent event) {...} 

    /** 
    * Initializes the controller class. 
    * 
    * @param url 
    * @param rb 
    */ 
    public void initialize(URL url, ResourceBundle rb 
    ) { 
     contrastAdjuster.valueProperty().addListener((observable, oldValue, newValue) -> { 
      double value = contrastAdjuster.getValue(); 
      ColorAdjust colorAdjust = new ColorAdjust(); 
      colorAdjust.setContrast(value); 
      imgView.setEffect(colorAdjust); 
     }); 
    } 
} 

ich bin mir nicht sicher, ob die FXML Datei für AdjustmentBar relevant ist, aber hier geht:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.geometry.Insets?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.ScrollPane?> 
<?import javafx.scene.control.Slider?> 
<?import javafx.scene.control.ToggleButton?> 
<?import javafx.scene.image.Image?> 
<?import javafx.scene.image.ImageView?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.BorderPane?> 
<?import javafx.scene.layout.HBox?> 
<?import javafx.scene.layout.Pane?> 

<AnchorPane id="AnchorPane" prefHeight="435.0" prefWidth="435.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Multimodality.controller.AdjustmentBarController"> 
    <children> 
     <BorderPane prefHeight="435.0" prefWidth="435.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
     <center> 
      <ScrollPane fx:id="ScrollPane" pannable="true" prefHeight="435.0" prefWidth="435.0" BorderPane.alignment="CENTER"> 
       <content> 
        <Pane fx:id="imgContainer"> 
        <children> 
          <ImageView fx:id="imgView" fitHeight="400.0" fitWidth="400.0" nodeOrientation="INHERIT" pickOnBounds="true" preserveRatio="true" /> 
         <Label fx:id="txtLabel" alignment="TOP_LEFT" layoutX="336.0" layoutY="-1.0" prefHeight="134.0" prefWidth="75.0" wrapText="true" /> 
        </children> 
        </Pane> 
       </content> 
      </ScrollPane> 
     </center> 
     <bottom> 
      <HBox alignment="CENTER" prefHeight="35.0" prefWidth="435.0" spacing="8.0" BorderPane.alignment="CENTER"> 
       <children> 
         <Button fx:id="btnZoomOut" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnZoomOutAction" prefHeight="25.0" prefWidth="25.0"> 
          <graphic> 
           <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
            <image> 
             <Image url="/img/icon_zoomout.png" /> 
            </image> 
           </ImageView> 
          </graphic> 
         </Button> 
         <Button fx:id="btnZoom100" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnZoom100Action" prefHeight="25.0" prefWidth="25.0"> 
          <graphic> 
           <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
            <image> 
             <Image url="/img/icon_fit.png" /> 
            </image> 
           </ImageView> 
          </graphic> 
         </Button> 
         <Button fx:id="btnZoomIn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnZoomInAction" prefHeight="25.0" prefWidth="25.0"> 
          <graphic> 
           <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
            <image> 
             <Image url="/img/icon_zoomin.png" /> 
            </image> 
           </ImageView> 
          </graphic> 
         </Button> 
         <Button fx:id="btnRotateRight" contentDisplay="CENTER" graphicTextGap="0.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnRotateRightAction" prefHeight="25.0" prefWidth="25.0"> 
          <graphic> 
           <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
            <image> 
             <Image url="/img/shape_rotate_clockwise.png" /> 
            </image> 
           </ImageView> 
          </graphic> 
         </Button>  
         <Button fx:id="btnRotateLeft" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnRotateLeftAction" prefHeight="25.0" prefWidth="25.0"> 
          <graphic> 
           <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
            <image> 
             <Image url="/img/shape_rotate_anticlockwise.png" /> 
            </image> 
           </ImageView> 
          </graphic> 
         </Button> 
        <ToggleButton fx:id="btnMeasure" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#btnMeasureAction" prefHeight="25.0" prefWidth="25.0"> 
        <graphic> 
         <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
          <image> 
           <Image url="/img/ruler.png" /> 
          </image> 
         </ImageView> 
        </graphic> 
        </ToggleButton> 
        <ImageView fitHeight="20.0" fitWidth="20.0" preserveRatio="true"> 
        <image> 
         <Image url="/img/contrast.png" /> 
        </image> 
        <HBox.margin> 
         <Insets left="8.0" right="-2.0" /> 
        </HBox.margin> 
        </ImageView> 
         <Slider fx:id="contrastAdjuster" blockIncrement="0.1" majorTickUnit="0.5" max="1.0" min="-1.0" minorTickCount="4" prefHeight="24.0" prefWidth="128.0" showTickMarks="true" /> 
       </children> 
       <BorderPane.margin> 
        <Insets /> 
       </BorderPane.margin> 
      </HBox> 
     </bottom> 
     </BorderPane> 
    </children> 
</AnchorPane> 

Last but not least, hier ist die Nullpointer ich, wenn ich den Code ausführen:

java.lang.NullPointerException 
    at Multimodality.controller.ExaminationDisplayerController.SPECTLoad(ExaminationDisplayerController.java:224) 
    at Multimodality.controller.ExaminationDisplayerController.initialize(ExaminationDisplayerController.java:86) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) 
    at Multimodality.controller.ExaminationOverviewController.showExaminationDisplayer(ExaminationOverviewController.java:352) 
    at Multimodality.controller.ExaminationOverviewController.btnChooseExaminationsAction(ExaminationOverviewController.java:341) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769) 
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Node.fireEvent(Node.java:8413) 
    at javafx.scene.control.Button.fire(Button.java:185) 
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) 
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) 
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555) 
    at com.sun.glass.ui.View.notifyMouse(View.java:937) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 

BUILD SUCCESSFUL 

Total time: 52.909 secs 

Ich hoffe, dass einige von euch kann mir helfen! Vielen Dank im Voraus :-)

+0

Zwei Aussagen verwirrt mich - „AdjustmentBar ist geladen in eine andere Klasse namens "ExaminationDisplayer" und "Ich konnte die AdjustmentBar in den ExaminationDisplayer laden"? Auch ich kann sehen, dass Ihre ExaminationDisplaye rController erweitert AdjustmentBarController, aber es scheint nicht richtig zu sein. Können Sie etwas Licht auf das werfen, was Sie hier erreichen wollen? – ItachiUchiha

+0

@ItachiUchiha Hallo! Ja, der ExaminationDisplayer lädt Bilder aus einer Datenbank und sollte diese in einem imageView anzeigen.Ich möchte jedoch nicht, dass es ein normales ImageView ist, sondern es sollte das sein, das ich in AdjustmentBar entworfen habe - weil es auch eine Werkzeugleiste hat, die es mir erlaubt, den Kontrast für jedes ImageView zu vergrößern/zu drehen/einzustellen . Ich konnte nicht imgView (das ist die fixID des ImageView von AdjustmentBar) aufrufen, wenn ich nicht den "extend" -Befehl hinzugefügt habe - aber vielleicht stimmt das gar nicht. Ich hoffe, das macht Sinn! Ich habe auch den Fehler hinzugefügt, den ich auf den Post bekomme. :-) – Heidi

+0

@ItachiUchiha Das heißt, ich habe eine FXML-Datei namens ExaminationDisplayer, die eine andere FXML-Datei namens AdjustmentBar lädt/öffnet/anzeigt. Wie viele AdjustmentBar-ImageViews geladen werden, hängt davon ab, wie viele Bilder ich gleichzeitig anzeigen möchte. Es könnte nur einer sein, aber normalerweise sind es drei oder vier. – Heidi

Antwort

2

Immer wenn Sie eine Anforderung haben und Sie Ihre Kontrollen public machen müssen, ist es ein Code-Geruch. Setzen Sie Ihre UI-Knoten niemals frei.

Der beste Weg, dies zu tun wäre, eine Methode in der AdjustmentBarController hinzufügen, um ein Bild zu akzeptieren. Diese Methode würde dann dieses Bild in der ImageView festlegen, die im Controller definiert ist.

public class AdjustmentBarController { 

    ... 

    @FXML 
    private ImageView imgView; 
    ... 
    public void setImage(Image image) { 
     imgView.setImage(image); 
    } 
} 

Nun, sobald dies erledigt ist. Erweitern Sie nicht die ExaminationDisplayerController von AdjustmentBarController.

Laden Sie für jedes Bild, das Sie in ExaminationDisplayerController laden, die FXML-Datei für AdjustmentBar, holen Sie den Controller vom FXMLLoader und stellen Sie das Image im Controller ein.

// Do not extend from AdjustmentBarController 
public class ExaminationDisplayerController { 

    ... 

    public void SPECTLoad() throws SQLException, ClassNotFoundException { 
     DBConnection dbConn = new DBConnection(); 
     ... 
     Image image = new Image(new File("SPECT_IMAGE.jpg").toURI().toString(), 200, 200, true, true); 
     FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/AdjustmentBar.fxml")); 
     AnchorPane anchorPaneFromAdjustmentBar = loader.load(); 
     anchorPane.getChildren().add(anchorPaneFromAdjustmentBar); 
     // Get the controller from the FXMLLoader 
     AdjustmentBarController controller = (AdjustmentBarController) loader.getController(); 
     // Set the image 
     controller.setImage(image); 
     ... 
    } 
} 

Für weitere Informationen, gehen Sie durch:

+0

Danke, das hilft sehr! Ich habe versucht, eine vorhandene Bilddatei aus meinem Projekt mit Ihrem Code zu laden, und das funktioniert einwandfrei. Leider kann ich die SPECT_IMAGE.jpg trotzdem nicht anzeigen. Ich denke, das muss wegen etwas anderem sein, also werde ich ein wenig nachforschen, was falsch sein könnte. Danke nochmal! – Heidi

+1

Fühlen Sie sich frei, irgendwelche zusätzlichen Fragen in den Kommentaren unten zu stellen, sobald Sie mit Ihrer Forschung fertig sind. – ItachiUchiha

+1

@Heidi Bild hat [Fehler] (https://docs.oracle.com/javase/image/Imva.html#errorProperty) und [Ausnahme] (https: // docs. oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html#exceptionProperty), versuchen Sie, ihnen Listener hinzuzufügen oder sie abzufragen, um festzustellen, ob ein Bildladefehler aufgetreten ist. – jewelsea

Verwandte Themen