0
我已經搜索了很多,但我得到的解決方案並不按照我的需要。我在樹結構中顯示多個服務器。我想在服務器(本地主機)節點的右側設置圖標,當它的值發生變化時。請提供我設置圖標的方式。在下面的圖像localhost是服務器名稱。它的服務器節點。如何將圖標圖標設置爲標籤右側的Jtree節點取決於節點值?
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;
}
}
試試:'label.setHorizontalTextPosition(SwingConstants.LEADING);' –