Miért nem fut le az alábbi Java (FX) kódom?

0 értékelés
289 megtekintés
Eventik (36 pont) kérdezte 2017. Nov 9.
Krisz újracímkézte 2017. Nov 9.

Sziasztok!

JavaFX FXML alkalmazásnál ez a kód valamiért hibát dob de nem értem miért. Irtam köré try-catch blokkot hogy lássam mi a hiba, az Image objektum nem jön létre de a felette lévő sorban ugyanez a kód működik a másik Image objektum létrehozásához. Vajon miért? Mi itt a hiba amiről nem tudok? A //MÁSODIK GOMB-nál a catch ágba jut ha lefuttatom.

public class FXMLDocumentController implements Initializable {
      @FXML
      AnchorPane MenuPane;
      
      @FXML
      Button MessageButton;
      
      @FXML
      Button FinderButton;
      
      public void setButton()
      {
            //ELSŐ GOMB
            Image pic1=new Image(getClass().getResourceAsStream("/rsz_message.png"));
            ImageView messageNode=new ImageView(pic1);
            MessageButton.setGraphic(messageNode);
            
            
            //MÁSODIK GOMB
            try{
            Image pic2=new Image(getClass().getResourceAsStream("/finder.png"));
            if(pic2==null)
                  throw new Exception();
            ImageView finderNode=new ImageView(pic2);
            FinderButton.setGraphic(finderNode);
            }
            
            catch(Exception e)
            {
                  System.out.println("hiba");
            }
            
      }
Krisz Guru (1,960 pont) szólt hozzá 2017. Nov 9.
A hiba üzenetet be tudod kérlek (formázva!) másolni? Köszi.
balazs79 Szakértő (400 pont) szólt hozzá 2017. Nov 9.
Krisz szerkesztett 2017. Nov 9.
Nem tudod megosztani az összes fájlt? Lehet, hogy el van írva valami.
MarkB Guru (1,002 pont) szólt hozzá 2017. Nov 12.
Én megnézném, hogy a finder.png a megfelelő mappában van-e, illetve hogy a kiterjesztése tényleg png-e. Ha tényleg csak a második száll el, akkor ha a recource hiányzik akkor az Image pic2 null marad.

1 Válasz

0 értékelés
wia Haladó Felhasználó (112 pont) válaszolta meg Szep 12.
System.out.println("hiba"); a catch ágban nem írja ki a tényleges hibát.
Helyette/utána az e.printStackTrace(); utasítást használva elvileg már a tényleges hibaüzenetet fogod látni a konzolon.

...