正如您從下面的圖像中看到的那樣,展開和摺疊圖標是灰色的,就像行選擇突出顯示一樣。這會導致您看不到展開或摺疊圖標(注意:不是文件夾圖標),當該行突出顯示時,我想爲選定的行具有白色展開或摺疊圖標。如何做到這一點?展開和摺疊圖標
別的東西,也將是酷,有展開和摺疊圖標完全隱藏,直到JTree的獲得焦點。像Windows 7的樹。
正如您從下面的圖像中看到的那樣,展開和摺疊圖標是灰色的,就像行選擇突出顯示一樣。這會導致您看不到展開或摺疊圖標(注意:不是文件夾圖標),當該行突出顯示時,我想爲選定的行具有白色展開或摺疊圖標。如何做到這一點?展開和摺疊圖標
別的東西,也將是酷,有展開和摺疊圖標完全隱藏,直到JTree的獲得焦點。像Windows 7的樹。
谷歌表示 - 根據這個帖子:http://www.exampledepot.com/egs/javax.swing.tree/DefIcons.html - :
// Retrieve the three icons
Icon leafIcon = new ImageIcon("leaf.gif");
Icon openIcon = new ImageIcon("open.gif");
Icon closedIcon = new ImageIcon("closed.gif");
// Create tree
JTree tree = new JTree();
// Update only one tree instance
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer();
renderer.setLeafIcon(leafIcon);
renderer.setClosedIcon(closedIcon);
renderer.setOpenIcon(openIcon);
// Remove the icons
renderer.setLeafIcon(null);
renderer.setClosedIcon(null);
renderer.setOpenIcon(null);
// Change defaults so that all new tree components will have new icons
UIManager.put("Tree.leafIcon", leafIcon);
UIManager.put("Tree.openIcon", openIcon);
UIManager.put("Tree.closedIcon", closedIcon);
// Create tree with new icons
tree = new JTree();
// Update row height based on new icons;
當然,我不知道你是否能修改只在這去的圖像的顏色。但你總是可以創建新的圖標,對吧?
嘿,thx回覆,但這三個圖標(開放封閉和葉,圖標)表示爲藍色我的圖片中的文件夾,我想更改展開的摺疊圖標,灰色箭頭。我成功地改變了他們,他們總是+和 - 標誌。 – ex0b1t 2012-02-01 08:42:20
可以使用下面的代碼更改它們,但是這會更改所有展開和摺疊圖標,現在我只想更改所選行的圖標。 UIManager.put(「Tree.expandedIcon」,new ImageIcon(FileBrowser.class.getResource(「Resources/Expand.png」))); UIManager.put(「Tree.collapsedIcon」,new ImageIcon(FileBrowser.class.getResource(「Resources/Collapse.png」))); – ex0b1t 2012-02-01 08:42:39
第一個鏈接已經死亡。 – 2017-08-04 12:48:28
你可以試試這個。然而,你應該注意到爲了使這個工作,我不得不在樹上覆蓋setUI,只允許我的TreeUI。
private class IconTreeUI extends BasicTreeUI {
private Icon collapseIcon = null;
private Icon expandIcon = null;
@Override
public Icon getCollapsedIcon() {
if (collapseIcon == null) {
collapseIcon = new ImageIcon(yourCollapseImageHere);
}
return collapseIcon;
}
@Override
public Icon getExpandedIcon() {
if (expandIcon == null) {
expandIcon = new ImageIcon(yourExpandImageHere);
}
return expandIcon;
}}
+1的一個很好的問題,但它實際上把您的評論維森特普拉塔與另一仔細看屏幕截圖,我意識到究竟你是什麼意思!我編輯了一些文字來強調***的重點。 ;) – 2012-02-01 08:48:01
GUI使用什麼PLAF? – 2012-02-01 08:49:14
它使用Windows LAF – ex0b1t 2012-02-01 09:55:47