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 ); } }
戻る inserted by FC2 system