развернуть и свернуть значки - PullRequest
3 голосов
/ 01 февраля 2012

Как видно из изображений ниже, значки разворачивания и свертывания серого цвета, а также выделения выделения строк. Это приводит к тому, что вы не видите значок развернуть или свернуть (Примечание: Не значок папки), когда строка выделена, я хочу иметь белый значок развернуть или свернуть для строки это выбрано. Как это можно сделать?

enter image description here enter image description here

Что еще было бы здорово, так это полностью скрыть значки разворачивания и свертывания, пока JTree не получит фокус. как дерево windows 7

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Гугл говорит - согласно этому посту: 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;

Конечно, я не уверен, что вы можете изменить только цвет изображений на ходу. Но вы всегда можете создавать новые иконки, верно?

0 голосов
/ 19 июня 2013

Вы можете попробовать это.Однако вы должны заметить, что для того, чтобы это сработало, мне пришлось переопределить 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;
    }}
...