2016-04-12 19 views
1

Buradaki ilk sorum, bir şeylerin yanlış olması durumunda bana kızmam. Şu anda JavaFx'in yardımıyla java için boşta gibi bir oyun programı yapıyorum. Buradaki kod, eclipse mars ve JavaFx ile yazılmıştır. Kod doğru olduğunu bana gösterir Eclipse ama Programı başlatmak istediğinizde bunu hata iletileri bu bloğu atar:JavaFx Programı, java.lang.reflect.InvocationTargetException'ı atar.

public class Main extends Application{ 

private static final Color color = Color.web("#464646"); 
Button button3 = new Button("D"); 
DropShadow shadow = new DropShadow(); 
Label label = new Label(); 

public static void main(String[] args) throws Exception { 
    launch(args); 
} 

@Override 
public void start(Stage primaryStage) throws Exception{ 
    Scene scene = new Scene(new Group()); 
    primaryStage.setTitle("Button Sample"); 
    primaryStage.setWidth(300); 
    primaryStage.setHeight(190); 

    label.setFont(Font.font("Times New Roman", 22)); 
    label.setTextFill(color); 

    Image imageDecline = new Image(getClass().getResourceAsStream("../not.png")); 
    Image imageAccept = new Image(getClass().getResourceAsStream("../ok.png")); 

    VBox vbox = new VBox(); 
    vbox.setLayoutX(20); 
    vbox.setLayoutY(20); 
    HBox hbox1 = new HBox(); 
    HBox hbox2 = new HBox(); 

    Button button1 = new Button("Accept"); 
    button1.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;"); 
    button1.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      label.setText("Accepted"); 
     } 
    }); 

    Button button2 = new Button("Accept"); 
    button2.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      label.setText("Accepted"); 
     } 
    }); 

    button3.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      label.setText("Declined"); 
     } 
    }); 

    button3.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent e) { 
      button3.setEffect(shadow); 
     } 
    }); 

    button3.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent e) { 
      button3.setEffect(null); 
     } 
    }); 

    hbox1.getChildren().add(button2); 
    hbox1.getChildren().add(button3); 
    hbox1.getChildren().add(label); 
    hbox1.setSpacing(10); 
    hbox1.setAlignment(Pos.BOTTOM_CENTER); 

    Button button4 = new Button(); 
    button4.setGraphic(new ImageView(imageAccept)); 
    button4.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      label.setText("Accepted"); 
     } 
    }); 

    Button button5 = new Button(); 
    button5.setGraphic(new ImageView(imageDecline)); 
    button5.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent e) { 
      label.setText("Declined"); 
     } 
    }); 

    hbox2.getChildren().add(button4); 
    hbox2.getChildren().add(button5); 
    hbox2.setSpacing(25); 

    vbox.getChildren().add(button1); 
    vbox.getChildren().add(hbox1); 
    vbox.getChildren().add(hbox2); 
    vbox.setSpacing(10); 
    ((Group) scene.getRoot()).getChildren().add(vbox); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
}} 

Burada herkes bir ipucu ya bu soruna bir çözüm vardır umut :) olurdu çok senden hoş

... = new Image(getClass().getResourceAsStream("../not.png")); 

Eclipse başvurunuzu başlatmak

, ben bir olsun:

En Selamlar, Mike

+4

Lütfen sorunuzu tam yığın izlemeyi içerecek şekilde düzenleyin. Ayrıca [hangi satırı istisna attığınızı] belirtebilirsiniz (http://stackoverflow.com/questions/3988788). –

+0

Tüm paketler doğru şekilde içe aktarılır btw. –

cevap

1

Ben senin sorunun girişi ile ilgisi var size Image nesneleri oluşturmak için kullanmak akışları düşünüyorum InvocationTargetException da. PNG dosyaları bulunamadığından bir NullPointerException neden olur.

Uygulamanızı, Image nesnelerini oluşturmadan başlatmaya çalışın ve yine de istisnalar olup olmadığını öğrenin.

+0

Geri bildiriminiz için teşekkür ederim ve png'ler olmadan çalışır ... png'nin standart dosya yolu nedir? Paketin kök Cdc klasörü? –

+0

Göreli veya mutlak yollar kullanabilirsiniz. Göreli bir yol kullanırsanız (ör. "Not.png"), "not.png" dosyası, sınıf dosyanızın bulunduğu klasöre göre incelenir. Daha fazla bilgi bulunabilir [burada] (https://stackoverflow.com/questions/676250/different-ways-of-loading-a-file-as-an-inputstream). – Uwe