2013-10-16 27 views
0

只是为了测试我想Button这是一个Node到目前为止是内部TitledPane(我知道它包含一个AnchorPane)。获取Java FX中锚点窗格内显示的子节点?

这是我想要的方法一般代码:

@FXML private void alterarTitledPane(MouseEvent event) { 

     if (event.isShiftDown()) { 

      // Here is where I code for adding a button inside TitledPane     
     } 

     if (!titledPane.isExpanded()) { 

      titledPane.setExpanded(true); 
      titledPane.setText("Expandido"); 
     } 

     else { 

      titledPane.setExpanded(false); 
      titledPane.setText("No expandido"); 
     } 
} 

这是两个备选方案我已经尝试实现它:

替代1

((AnchorPane)titledPane.getContent()).getChildren().add(button2); 
button2.toFront(); 
button2.setVisible(true); 

替代2

Group a = new Group(button2); 
((AnchorPane)titledPane.getContent()).getChildren().add(a); 
button2.toFront(); 
button2.setVisible(true); 

了不结果到目前为止...

+0

的代码看起来OK。没有看到整个代码很难说出问题。创建一个新的新项目并将其复制到只有titledpane,anchorpane和fxml等相关部分,然后重试。如果问题在该项目发布后仍然存在。 –

+0

奇怪的是,它的工作呢!现在问题是为什么?*** – diegoaguilar

回答

0

在窗格中首先你必须initalize它... 尝试这种添加节点....是工作。

AnchorPane anch = new AnchorPane(); 
Button btn = new Button("anshul"); 
anch.getChildren().add(btn); 
+0

嗯,我通过'FXMLLoaders',我设计SceneBuilder中的场景 – diegoaguilar

+0

是的,它的罚款...所以当你拿控制器在检查器代码选择中定义它的fxid。 ...然后从视图 - >显示样品控制器选择复制孔代码...并将其粘贴到控制器文件中,然后完美地工作 –

0
Anchorpane pane=new Anchorpane(); 
Label lbl_user=new Label("Username"); 
Textfield txt=new Textfield(); 
AnchorPane.setTopAnchor(lbl_user, 10.0); 
AnchorPane.setRightAnchor(lbl_user 10.0); 
AnchorPane.setTopAnchor(txt, 40.0); 
AnchorPane.setRightAnchor(txt,10.0); 
panegetChildren().addAll(lbl_user,txt);