2011-11-29 11 views
12

Trong ứng dụng javaFX 2.0 của tôi, tôi cần phải thay thế một thành phần được sử dụng awt.CardLayout. Cardlayout có chức năng như một ngăn xếp hiển thị thành phần trên cùng trong ngăn xếp. Và chúng tôi cũng có thể định cấu hình thủ công để hiển thị.Làm cách nào để triển khai chức năng awt.CardLayout trong ứng dụng javaFX 2.0 của tôi?

Trong javaFX 2.0, có bố cục được gọi là StackPane. Nhưng nó không có vẻ như Cardlayout.

Trả lời

11

Không có CardLayout, nhưng bạn có thể sử dụng TabPane hoặc đơn giản là chuyển nhóm:

public void start(Stage stage) { 

    VBox vbox = new VBox(5); 

    Button btn = new Button("1"); 
    Button btn2 = new Button("2"); 

    final Pane cardsPane = new StackPane(); 
    final Group card1 = new Group(new Text(25, 25, "Card 1")); 
    final Group card2 = new Group(new Text(25, 25, "Card 2")); 

    btn.setOnAction(new EventHandler<ActionEvent>() { 
     public void handle(ActionEvent t) { 
      cardsPane.getChildren().clear(); 
      cardsPane.getChildren().add(card1); 
     } 
    }); 

    btn2.setOnAction(new EventHandler<ActionEvent>() { 
     public void handle(ActionEvent t) { 
      cardsPane.getChildren().clear(); 
      cardsPane.getChildren().add(card2); 
     } 
    }); 

    vbox.getChildren().addAll(btn, btn2, cardsPane); 
    stage.setScene(new Scene(vbox)); 
    stage.setWidth(200); 
    stage.setHeight(200); 
    stage.show(); 

} 
+0

Tôi đã thử với TabPane. Nhưng nó sẽ hiển thị một menu tab. Vì vậy, tôi đã sử dụng cách bạn đã đề xuất ở đây. Nó hoạt động tốt cho yêu cầu của tôi. Cảm ơn Sergey. :) – Anuruddha

+2

Lưu ý, có điều khiển mới có tên là 'Pagination' trong phiên bản 2.2 có thể phù hợp với nhu cầu của bạn hơn nữa. –

6

Một lựa chọn khác là sử dụng một StackPane và thiết lập sự hiện diện của tất cả nhưng curent Pane-false. Không lý tưởng, nhưng một cách khác để suy nghĩ về sự cố