2017-09-25 55 views
0

我已經搜索了很多,但我得到的解決方案並不按照我的需要。我在樹結構中顯示多個服務器。我想在服務器(本地主機)節點的右側設置圖標,當它的值發生變化時。請提供我設置圖標的方式。在下面的圖像localhost是服務器名稱。它的服務器節點。如何將圖標圖標設置爲標籤右側的Jtree節點取決於節點值?

enter image description here

public class ServerInfo{ 
    private Boolean isShotDetected =false; 

    public Boolean getIsShotDetected() { 
     return isShotDetected; 
    } 
    public void setIsShotDetected(Boolean isShotDetected) { 
     this.isShotDetected = isShotDetected; 
    } 
    } 


    class MyTreeCellRenderer extends DefaultTreeCellRenderer { 
    private Border border = BorderFactory.createEmptyBorder(2, 2, 2, 2); 

    @Override 
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, 
      boolean leaf, int row, boolean hasFocus) { 

     JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, 
       hasFocus); 
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; 

     if (expanded) { 
      setFont(new Font("Arial", Font.BOLD, 13)); 

     } else { 
      setFont(new Font("Arial", Font.PLAIN, 13)); 
     } 

     if (node instanceof ServerNode) { 
      ServerInfo info = ((ServerNode) node).getMultiSite(); 
      if (info.getIsShotDetected()) { 
       // label.setAlignmentX(SwingConstants.RIGHT); 
       label.setIcon(redBall); 
      } 

     } 
     label.setBorder(border); 

     return label; 
    } 
} 
+0

試試:'label.setHorizo​​ntalTextPosition(SwingConstants.LEADING);' –

回答

0

嘗試以下:

label.setHorizontalTextPosition(SwingConstants.TRAILING); 
if (node instanceof ServerNode) { 
    ServerInfo info = ((ServerNode) node).getMultiSite(); 
    if (info.getIsShotDetected()) { 
     label.setHorizontalTextPosition(SwingConstants.LEADING); 
     label.setIcon(redBall); 
    } 

}