从同一层次结构中的节点重绘节点

时间:2012-08-29 10:53:28

标签: java user-interface javafx-2

enter image description here

在上面的应用程序中,我有一个tabpane(带有“age”,“gender”和“zipcode”的tabpane),其中每个标签包含一个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()以显示新的列表列表。我怎么做?

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

你有什么尝试?没有什么值得一提的 - 我被困住了。

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

1 个答案:

答案 0 :(得分: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);
            }
         }); 
    }