2008년 8월 8일 금요일

java DefaultTreeCellRenderer test




import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;

public class TreeTest extends JFrame {
JPanel jPanel1 = new JPanel();
JTree tree;
BorderLayout borderLayout1 = new BorderLayout();
Icon openNode = new ImageIcon("C:/i1.jpg");
Icon online = new ImageIcon("c:/i2.jpg");
Icon closeNode = new ImageIcon("c:/i3.jpg");
public TreeTest() {
try {
Init();
tree.setRootVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
TreeTest test = new TreeTest();
test.setSize(300, 500);
test.setVisible(true);
}

private void Init() throws Exception {
String rsmd1[]={"일지매","홍길동","android","경품","로또"};
String name=null;
DefaultMutableTreeNode parent = new DefaultMutableTreeNode("친구", true);
//확인방법 여기서
for(int i=0;i<=4;i++){
name=rsmd1[i];//배열에서 문자열 가져오고

DefaultMutableTreeNode DbData = new DefaultMutableTreeNode(name);
parent.add(DbData);
}
// 여기까지 주석 하고 실행하고 하지 않고 실행 해보시면 됩니다.

tree = new JTree(parent);

jPanel1.setLayout(borderLayout1);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(tree, BorderLayout.CENTER);

tree.setCellRenderer(new MyRenderer());
}
class MyRenderer extends DefaultTreeCellRenderer
{
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
{


super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (expanded)//그룹 열렸을때 아이콘
{
setIcon(openNode);
}
else if(!expanded && leaf) //그룹이 열리지않고 리프노드일때(즉 친구아이콘)
{
//여기 if문은 사용자가 프로그램하기 나름이므로 참고하세요
// 저의 경우는 친구그룹인가를 확인하고 아이콘을 제어합니다.
// 의문점 쪽지주세요.
if(value.toString().equals("친구"))setIcon(closeNode);
else setIcon(online);
}
else if(!expanded)//그룹이 닫혔을때
{
setIcon(closeNode);
}
return this;
}
}

}

//문]
//그룹추가를 했을때 닫힌그룹모양이 아니고 친구가 없어서 리프노드 처리가 되서 친구 아이콘으로 되버리는군요..;; 어떻게 해야 자식이 없는 그룹노드에 그룹아이콘 모양을 줄수 있나요?

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby