2014-10-18 28 views
0

我在寻找类似于VBox(将元素设置为彼此之上的内容)时遇到了一些问题,但这不会自动适应。我试图创建甘特图,但如果我创建小宽度的矩形,并将文本添加到VBox以及数字宽度大于我的矩形宽度它将选择数字宽度。当我开始使用HBox()来放置相邻的东西时,它就成了一个问题。JavaFX - 与VBox类似的东西,但不会自动适应

,我可以告诉你它的画面:

由于从图像所见,有蓝色和黑色矩形之间的空白,这些都是由数字比长方形的宽度更高的宽度所致。我想忽略数字宽度,并得到矩形紧挨着(尽管保持数字在中间矩形的中心)。 HBox已创建值为0,所以没有差距。

我的代码是在爱沙尼亚完全写,我会提供一个例子代码,是不是从实际的程序,但功能,我已经做了这个想法:

 HBox hbox1 = new HBox(); 
     VBox vbox1 = new VBox(); 
     Rectangle r1 = new Rectangle(0,0,30,30); 
     Rectangle r2 = new Rectangle(0,0,5,50); 
     r2.setFill(Color.BLUE); 
     Rectangle r3 = new Rectangle(0,0,30,30); 
     Text t1 = new Text(); 
     t1.setText(Integer.toString(222)); 
     vbox1.getChildren().addAll(r2,t1); 
     hbox1.getChildren().addAll(r1,vbox1,r3); 
     root.setBottom(hbox1); 

在此先感谢。

回答

1

一个这样做可能的方式如下:

设置文本节点unmanagable其父,并确定其位置手动

Text t1 = new Text(); 
t1.setText(Integer.toString(222)); 
t1.setManaged(false); 
t1.setLayoutX(-t1.getLayoutBounds().getWidth()/2); 
t1.setLayoutY(r2.getHeight() + t1.getLayoutBounds().getHeight()); 
+0

谢谢你,这所做的工作:) – charen 2014-10-19 18:39:10