2015-10-04 144 views
-1

我是一名初學java學生。我正在嘗試編寫一個簡單的程序,單擊按鈕時將顯示本地保存的圖像。圖片不會加載。代碼如下所示。任何幫助表示讚賞。請記住我的技能水平。嵌入ImageView事件處理程序>>>不工作

import javafx.application.*; 
import javafx.stage.*; 
import javafx.scene.*; 
import javafx.scene.image.*; 
import javafx.scene.layout.*; 
import javafx.scene.text.*; 
import javafx.geometry.*; 
import javafx.scene.control.*; 

public class PhotoViewer extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 


    @Override 
    public void start(Stage primaryStage) { 
     Text txtHeading = new Text("Click to see the picture"); 
     txtHeading.setFont(new Font(20)); 
     HBox paneTop = new HBox(txtHeading); 
     paneTop.setPadding(new Insets(20, 20, 20, 20)); 

     Button btn1 = new Button("Picture"); 
     btn1.setPrefWidth(80); 
     btn1.setOnAction(e -> btn1_Click()); 

     HBox paneBottom = new HBox(btn1); 

     VBox pane = new VBox(paneTop, paneBottom); 
     pane.setPadding(new Insets(20, 20, 20, 20)); 

     Scene scene = new Scene(pane); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("Picture Choice"); 
     primaryStage.show(); 
    } 

    public void btn1_Click() { 
     Image img = new Image("file:c:\\users\\sandy\\pictures\\IMG_0127.jpg"); 
     ImageView iview1 = new ImageView(img); 
     iview1.setFitWidth(300); 
     iview1.setFitHeight(300); 
     iview1.setPreserveRatio(true); 

     BorderPane bpane1 = new BorderPane(); 
     bpane1.setCenter(iview1); 
    } 
} 

回答

0

你必須做的是加入BorderPane在其中添加您ImageView到作爲場景的一部分的節點。最簡單的方法是將其添加到VBox pane。那麼你需要padd pane到事件處理程序:

@Override 
public void start(Stage primaryStage) { 
    Text txtHeading = new Text("Click to see the picture"); 
    txtHeading.setFont(new Font(20)); 
    HBox paneTop = new HBox(txtHeading); 
    paneTop.setPadding(new Insets(20, 20, 20, 20)); 

    Button btn1 = new Button("Picture"); 
    btn1.setPrefWidth(80); 

    HBox paneBottom = new HBox(btn1); 

    VBox pane = new VBox(paneTop, paneBottom); 
    pane.setPadding(new Insets(20, 20, 20, 20)); 

    btn1.setOnAction(e -> btn1_Click(pane)); 


    Scene scene = new Scene(pane); 
    primaryStage.setScene(scene); 
    primaryStage.setTitle("Picture Choice"); 
    primaryStage.show(); 
} 

public void btn1_Click(VBox parent) { 
    Image img = new Image("file:c:\\users\\sandy\\pictures\\IMG_0127.jpg"); 
    ImageView iview1 = new ImageView(img); 
    iview1.setFitWidth(300); 
    iview1.setFitHeight(300); 
    iview1.setPreserveRatio(true); 

    BorderPane bpane1 = new BorderPane(); 
    bpane1.setCenter(iview1); 
    parent.getChildren().add(bpane1); 
} 
+0

感謝您的幫助!這似乎是有道理的。但是,我現在得到以下錯誤:在PhotoViewer.blackda $ 0(PhotoViewer.java:30)PhotoViewer.btn1_Click(PhotoViewer.java:54)線程中的「JavaFX Application Thread」java.lang.NullPointerException異常: – Ron

相關問題