用新的标题窗格扩展手风琴

时间:2012-11-30 17:10:29

标签: java accordion javafx-2

我想用一个新的TitledPane系列重新填充Accordion,但我发现在手风琴中扩展节点时遇到了问题。

我猜这是JavaFX库的一个问题。因为sample provided in the manual for Accordion and TitledPane from Oracle也会发生这种情况。我采用原始的例子22-5,并改变它:

public void start(Stage stage) {
    stage.setTitle("TitledPane");
    Scene scene = new Scene(new Group(), 800, 250);
    scene.setFill(Color.GHOSTWHITE);

    final Label label = new Label("Initial");

    // --- Accordion
    final Accordion accordion = new Accordion ();                
    for (int i = 0; i < imageNames.length; i++) {
        images[i] = new 
            Image(getClass().getResourceAsStream(imageNames[i] + ".jpg"));
        pics[i] = new ImageView(images[i]);
        tps[i] = new TitledPane(imageNames[i],pics[i]); 
    }   
    accordion.getPanes().addAll(tps);        
    accordion.expandedPaneProperty().addListener(new 
        ChangeListener<TitledPane>() {
            public void changed(ObservableValue<? extends TitledPane> ov,
                TitledPane old_val, TitledPane new_val) {
                    if (new_val != null) {
                        label.setText("expanded: " +accordion.getExpandedPane().getText());
                    }
          }
    });

    HBox hbox = new HBox(10);
    Button buttonClear = new Button("Clear and refill");
    buttonClear.setOnAction(new EventHandler<ActionEvent>() {            
        @Override
        public void handle(ActionEvent arg0) {
            for (int i = 0; i < imageNames.length; i++) {                    
                tps[i] = new TitledPane(imageNames[i]+" refill",pics[i]); 
            }
            accordion.getPanes().clear();
            accordion.getPanes().addAll(tps);
            accordion.getPanes().get(0).setExpanded(true);
        }
    });
    hbox.setPadding(new Insets(20, 0, 0, 20));
    hbox.getChildren().setAll(label, accordion, buttonClear);

    Group root = (Group)scene.getRoot();
    root.getChildren().add(hbox);
    stage.setScene(scene);
    stage.show();
}

当我更改扩展的TitledPane时,标签会获取其值。我还添加了一个按钮,清除了手风琴中的所有TitledPane,创建了一个新的并将第一个TitledPane设置为Expanded。

因此,当我按下按钮时,手风琴被重新填充,标签上显示第一个TitledPane它已经扩展但最后一个它似乎被选中,但没有图像。这是第二次按下此按钮,或者我们之前选择了其中一个TitledPane。

这件事正是我想做的事情。清除所有TitledPane并用新的TitledPane重新填充它,它给出了同样奇怪的结果。

我如何清理所有TitledPane,创建一个新的并将第一个TitledPane设置为扩展而没有我之前解释的这种副作用?

感谢阅读!

0 个答案:

没有答案