TreeCellRendererを試す -- その2
戻る
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
/**
* $Id: TCR.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
*/
public class TCR extends JFrame implements TreeCellRenderer {
Map map;
public Component getTreeCellRendererComponent(
JTree tree , Object value , boolean selected ,
boolean expanded , boolean leaf , int row , boolean hasFocus
) {
// valueは実際のノードのオブジェクトを指す
String text = value.toString();
JLabel label = new JLabel( text );
String gender = ( String ) map.get( value );
if ( "MALE".equals( gender ) ) {
label.setIcon( new ImageIcon( "male.gif" ) );
}
if ( "FEMALE".equals( gender ) ) {
label.setIcon( new ImageIcon( "female.gif" ) );
}
return label;
}
public TCR() {
JPanel mainPanel = new JPanel();
map = new HashMap();
DefaultMutableTreeNode root = new DefaultMutableTreeNode( "メンバー" );
DefaultTreeModel treeModel = new DefaultTreeModel( root );
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode( "山田太一" );
map.put( node1, "MALE" );
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode( "大久保彦左衛門" );
map.put( node2, "MALE" );
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode( "津島恵子" );
map.put( node3, "FEMALE" );
root.add( node1 );
root.add( node2 );
root.add( node3 );
JTree tree = new JTree( treeModel );
tree.setCellRenderer( this );
// スクロールするペインを追加
JScrollPane scrPane = new JScrollPane();
scrPane.getViewport().setView( tree );
scrPane.setPreferredSize( new Dimension( 360, 480 ) );
mainPanel.add( scrPane );
// コンテナに各パネルを配置
Container container = this.getContentPane();
container.add( mainPanel, BorderLayout.CENTER );
}
public static void main( String[] args ) {
/* 自分自身を作成 */
TCR viewer = new TCR();
/* 終了処理を追加 */
viewer.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
);
/* サイズと位置を指定 */
viewer.setBounds( 10, 10, 400, 600 );
/* 実際に表示する */
viewer.setTitle( "TreeCellRendererを試す -- その2" );
viewer.setVisible( true );
}
}
戻る