2014-09-23 69 views
0

我创建了一个TreeView并添加了一些TreeItem的自定义图标。该图标的尺寸为16x16(取自FamFamFam)。我在SO的某个地方看过,首选尺寸是9x9px。如何添加填充/边缘到JavaFX8 TreeItem的图标?

因此,这里是我的树创建代码:

final Path folderImgPath = FileSystems.getDefault().getPath("./resources/gui/folder.png"); 
Image folder = SwingFXUtils.toFXImage(ImageIO.read(new FileInputStream(folderImgPath.toFile())), null); 
ImageView tis = new ImageView(folder); 

TreeItem<String> ti1 = new TreeItem<String>("Inbox2", tis); 

TreeItem<String> rootItem = new TreeItem<String>("Inbox"); 
rootItem.getChildren().add(ti1); 
rootItem.getChildren().add(new TreeItem<String>("Inbox3", new ImageView(folder))); 
rootItem.getChildren().add(new TreeItem<String>("Inbox4", new ImageView(folder))); 

“folder.png”图标旁边TreeItem出现在TreeView的预期,但我想做的事和不知道如何做的是将图标向上移动2个像素。看看截图:

enter image description here

Inbox2的图标和Inbox4需要在y一些调整 - 轴。我发布了处理截图并将Inbox3的图标向上移动了2个像素。红线显示细胞标记的基线。

那么你能帮我在代码中实现这个吗?

这将有可能使用到9x9的缩放图标代码:

ImageView tis = new ImageView(folder); 
tis.setFitWidth(9); 
tis.setFitHeight(9); 

少于其在y轴为中心,但规模只是太小的famfamfam图标。 另一种选择是将字体放大一些,但我也不想那样做。

THX,

回答

1

对于初学者来说,你可以摆脱那些Swing方法加载图像:

ImageView tis=new ImageView(
     new Image(getClass().getResourceAsStream("/resources/gui/folder.png"))); 

然后你可以用图像视图与HBox,顶部对齐图像然后玩到所需的高度,直到找到所需的效果(取决于图像的尺寸和字体大小):

HBox hTis=new HBox(tis); 
hTis.setAlignment(Pos.TOP_CENTER); 
hTis.setPrefHeight(20); // <-- Adjust this value 

TreeItem<String> ti1 = new TreeItem<>("Inbox2",hTis); 
... 
+0

它的工作,thx! als thx用于图像加载提示;) – Chris 2014-09-24 10:57:45