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を);' –