2016-07-31 16 views
0

テーブルの作成を開始しようとすると、NULLポインタに問題があります。 私はObservableListに入れたKomponentaというクラスのオブジェクトを持っていて、それをTableViewに表示しようとします。私はこの時間を複数のfxmlスクリーンで処理しようとしましたが、何らかの理由で1より多くのものでは機能しません。.fxmltestは、main.fxmlのボタンを押すと呼び出され、新しいボタンをロードするメソッドです。JavaFX TableView/Column NULLポインタ例外

MainController.java

public ObservableList<Komponenta> komponente = FXCollections.observableArrayList(new Komponenta("Neki Tip", "Neki Proizvodac","Neki opis", 5)); 
@FXML 
private TableView<Komponenta> Tablica; 
@FXML 
private TableColumn<Komponenta,String> Tip; 
@FXML 
private TableColumn<Komponenta,String> Proizvodac; 
@FXML 
private TableColumn<Komponenta,String> Karakteristika; 
@FXML 
private TableColumn<Komponenta,Integer> Komada; 
@FXML 
private void test(ActionEvent event) throws IOException{ 
    Node node=(Node) event.getSource(); 
    Stage stage = (Stage) node.getScene().getWindow(); 
    Parent root = (Pane)FXMLLoader.load(getClass().getResource("ElKomponenta.fxml")); 
    Scene scene = new Scene(root); 
    stage.setScene(scene); 
    stage.show();  
} 
@FXML 
private void initialize() throws Exception { 
    System.out.println(komponente.get(0).getKomada()); 
    Tip.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("tip")); 
    Proizvodac.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("proizvodac")); 
    Karakteristika.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("karakteristika")); 
    Komada.setCellValueFactory(new PropertyValueFactory<Komponenta, Integer>("komada")); 
    Tablica.setItems(komponente); 
} 

ElKomponenta.fxml

<TableView fx:id="Tablica" prefHeight="603.0" prefWidth="889.0"> 
    <columns> 
    <TableColumn fx:id="Tip" prefWidth="177.0" text="Tip" /> 
    <TableColumn fx:id="Proizvodac" minWidth="0.0" prefWidth="207.0" text="Proizvođač" /> 
     <TableColumn fx:id="Karakteristika" prefWidth="326.0" text="Karakteristike" /> 
     <TableColumn fx:id="Komada" minWidth="0.0" prefWidth="178.0" text="Komada" /> 
    </columns> 
</TableView> 

エラー:

Caused by: java.lang.NullPointerException 
at application.MainController.initialize(MainController.java:62) 
... 27 more 

最初setCellValueFactoryに開始する行です。必要に応じて

また、Komponenta.java

public class Komponenta { 

    private String proizvodac; 
    private String tip; 
    private String karakteristika; 
    private Integer komada; 

    public Komponenta(String a, String b, String c, Integer d){ 
     this.tip = a; 
     this.proizvodac = b; 
     this.karakteristika = c; 
     this.komada = d; 
    } 

    public String getProizvodac() { 
     return proizvodac; 
    } 

    public void setProizvodac(String proizvodac) { 
     this.proizvodac = proizvodac; 
    } 

    public String getTip() { 
     return tip; 
    } 

    public void setTip(String tip) { 
     this.tip = tip; 
    } 

    public String getKarakteristika() { 
     return karakteristika; 
    } 

    public void setKarakteristika(String karakteristika) { 
     this.karakteristika = karakteristika; 
    } 

    public Integer getKomada() { 
     return komada; 
    } 

    public void setKomada(Integer komada) { 
     this.komada = komada; 
    } 

} 

答えて

1

main.fxmlfx:idTipTableColumnが含まれているように見えるが、同じコントローラクラスを使用するように思われません。コントローラのインスタンスを使用するFXMLLoader.loadメソッドを呼び出すたびにの最後にinitializeが呼び出されるため、main.fxmlのローディングはNullPointerExceptionになります。両方fxmlため

使用異なるコントローラクラスが代わりに(S)main.fxmlのための1つのボタンのアクションハンドラとTableView関連のものが含まれている必要がありElKomponenta.fxmlのための1つを含める必要があります。