0

在此处输入图像描述

在上面的应用程序中,我有一个选项卡(带有“年龄”、“性别”和“邮政编码”的选项卡),其中每个选项卡都包含一个 VBox。VBox 分为两部分:

VBox 的上半部分允许您查看列表列表,VBox 的下半部分包含一个允许您更改列表列表的菜单。

VBox 下部的按钮更新上述列表列表。我希望在更改基础列表时重新更新 VBox 中的上层节点。

相关的代码片段可能是

Node createHierarchySplitMenu(HierarchiesFromFile hierarchies, String hierarchyName){

    VBox vBox = new VBox();
    vBox.getChildren().add(createHierarchyScrollPane(hierarchies, hierarchyName));
    vBox.getChildren().add(createHierarchyMenu());

    return vBox;
}

当 VBox 下部节点中的按钮(由 createHierarchyMenu() 创建)时,我希望再次调用 createHierarchyScrollPane() 以显示新的列表列表。我怎么做?

是否有从另一个节点更新一个节点的常规模式/方式(当它们处于同一级别时)?

你试过什么?没什么值得一提的——我被困住了。

如果您需要更多信息,请询问。不想让你陷入代码困境。

4

1 回答 1

1

据我了解,下一个解决方案可能是:

  1. 创建类来处理 createHierarchyScrollPane():

    private class HierarchyScrollPane extends ScrollPane  {
    
        public void update(HierarchiesFromFile hierarchies, String hierarchyName) {
             // code from createHierarchyScrollPane() which works with "this" instead of new Scroll Pane
        }
    }
    
  2. 将实例传递给 createHierarchyMenu():

    Node createHierarchySplitMenu(HierarchiesFromFile hierarchies, String hierarchyName){
    
        VBox vBox = new VBox();
    
        ScrollPaneUpdate hsp = new HierarchyScrollPane();
        hsp.update(hierarchies, hierarchyName);
        vBox.getChildren().add(hsp);
        vBox.getChildren().add(createHierarchyMenu(hsp));
    
        return vBox;
    }
    
  3. createHierarchyMenu() 中的某处:

    public void createHierarchyMenu(final HierarchyScrollPane hsp) {
         // ...
         Button btnSetMin = new Button("Set Min");
         btnSetMinsetOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent t) {
                 // your code for data update
                 hsp.update(hierarchies, hierarchyName);
            }
         }); 
    }
    
于 2012-08-29T12:10:14.137 回答