TreeCellRendererを試す
戻る
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
/**
* $Id: TreeCellRenderer.html,v 1.1 2009/06/22 16:12:01 kishi Exp kishi $
*/
public class MyTest extends JFrame implements TreeCellRenderer {
public Component getTreeCellRendererComponent(
JTree tree , Object value , boolean selected ,
boolean expanded , boolean leaf , int row , boolean hasFocus
) {
String text = value.toString();
JLabel label = new JLabel( text );
if ( leaf ) {
if ( text.contains( "(MALE)" ) ) {
label.setIcon( new ImageIcon( "male.gif" ) );
}
if ( text.contains( "(FEMALE)" ) ) {
label.setIcon( new ImageIcon( "female.gif" ) );
}
if ( selected )
label.setForeground( Color.RED );
}
return label;
}
public MyTest() {
JPanel mainPanel = new JPanel();
String arr[] = {
"山田太郎(MALE)", "小島裕子(FEMALE)" , "鶴岡正義(MALE)"
};
Hashtable node = new Hashtable();
node.put( "メンバー" , arr );
JTree tree = new JTree( node );
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 ) {
/* 自分自身を作成 */
MyTest viewer = new MyTest();
/* 終了処理を追加 */
viewer.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
);
/* サイズと位置を指定 */
viewer.setBounds( 10, 10, 400, 600 );
/* 実際に表示する */
viewer.setTitle( "TreeCellRendererを試す" );
viewer.setVisible( true );
}
}
戻る