2014-09-23 53 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