2013-07-09 53 views
0

我試圖重現從Oracle樣本分頁樣品,但是當我導入項目奇怪的事情發生,我不能建立並運行項目:PaginationSample的JavaFX不能將值分配給最後一個變量分頁

的完整的代碼是:

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.geometry.Pos; 
import javafx.scene.Node; 
import javafx.scene.control.*; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.VBox; 
import javafx.util.Callback; 

public class PaginationSample extends Application { 

    private final Pagination pagination; 
    private Image[] images = new Image[7]; 

    private void init(Stage primaryStage) { 
     Group root = new Group(); 
     primaryStage.setScene(new Scene(root)); 
     VBox outerBox = new VBox(); 
     outerBox.setAlignment(Pos.CENTER); 

     //Images for our pages 
     for (int i = 0; i < 7; i++) { 
      images[i] = new Image(PaginationSample.class.getResource("animal" + (i + 1) + ".jpg").toExternalForm(), false); 
     } 

     pagination = PaginationBuilder.create().pageCount(7).pageFactory(new Callback<Integer, Node>() { 
      @Override public Node call(Integer pageIndex) { 
       return createAnimalPage(pageIndex); 
      } 
     }).build(); 
     //Style can be numeric page indicators or bullet indicators 
     Button styleButton = ButtonBuilder.create().text("Toggle pagination style").onAction(new EventHandler<ActionEvent>() { 
      public void handle(ActionEvent me) { 
       if (!pagination.getStyleClass().contains(Pagination.STYLE_CLASS_BULLET)) { 
        pagination.getStyleClass().add(Pagination.STYLE_CLASS_BULLET); 
       } else { 
        pagination.getStyleClass().remove(Pagination.STYLE_CLASS_BULLET); 
       } 
      } 
     }).build(); 

     outerBox.getChildren().addAll(pagination, styleButton); 
     root.getChildren().add(outerBox); 
    } 
    //Creates the page content 
    private VBox createAnimalPage(int pageIndex) { 
     VBox box = new VBox(); 
     ImageView iv = new ImageView(images[pageIndex]); 
     box.setAlignment(Pos.CENTER); 
     Label desc = new Label("PAGE " + (pageIndex + 1)); 
     box.getChildren().addAll(iv, desc); 
     return box; 
    } 

    @Override public void start(Stage primaryStage) throws Exception { 
     init(primaryStage); 
     primaryStage.show(); 
    } 
    public static void main(String[] args) { launch(args); } 
} 

但是netbeans的顯示我的錯誤「不能將值分配給最後一個變量分頁」下面一行:

pagination = PaginationBuilder.create().pageCount(7).pageFactory(new Callback<Integer, Node>() { 

有人可以解釋我是怎麼回事?

回答

1

最終字段只能初始化一次。所以初始化它最好的地方是,當它宣佈

private final Pagination pagination = new Pagination(...); 

,也可以在構造函數中完成,因爲構造函數是有保證將每個實例

private final Pagination pagination; 

public PaginationSample() { 
    pagination = new Pagination(...); 
} 

final場一度被稱爲不能已初始化爲方法,因爲一旦該類的實例被創建,就可以多次調用該方法

+0

謝謝,因爲它是來自Oracle的樣本I a幾乎沒有檢查代碼,感謝和抱歉的愚蠢問題。 –