TableCellRendererを試す

戻る



:::::::::::::: MyCellRenderer.java :::::::::::::: import javax.swing.*; import java.awt.event.*; import java.awt.*; import javax.swing.table.*; import java.util.*; /** * $Id: TableCellRendererTest.html,v 1.1 2009/06/22 16:12:00 kishi Exp kishi $ * @author KISHI Yasuhiro */ public class MyCellRenderer extends JLabel implements TableCellRenderer { public Component getTableCellRendererComponent( JTable table, Object data, boolean isSelected, boolean hasFocus, int row, int column ) { setOpaque( true ); setText( data.toString() ); if ( column == 0 ) { setHorizontalAlignment( JLabel.RIGHT ); setBackground( Color.cyan ); setFont( new Font( "SansSerif", Font.PLAIN, 16 ) ); } else if ( column == 1 ) { setHorizontalAlignment( JLabel.LEFT ); setBackground( Color.white ); setFont( new Font( "Dialog", Font.ITALIC, 12 ) ); } else if ( column == 2 ) { setHorizontalAlignment( JLabel.CENTER ); setBackground( Color.white ); setFont( new Font( "SansSerif", Font.BOLD, 14 ) ); } return this; } } :::::::::::::: TableCellRendererTest.java :::::::::::::: import javax.swing.*; import java.awt.event.*; import java.awt.*; import javax.swing.table.*; import java.util.*; /** * $Id: TableCellRendererTest.html,v 1.1 2009/06/22 16:12:00 kishi Exp kishi $ * @author KISHI Yasuhiro */ public class TableCellRendererTest extends JFrame implements ActionListener { private String[] columnNames = {"id", "name", "updateTime"}; private DefaultTableModel model; public static void main( String[] args ) { TableCellRendererTest test = new TableCellRendererTest(); /* 終了処理 */ test.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); test.setTitle( "TableCellRendererのテスト" ); test.setBounds( 10, 10, 480, 600 ); test.setVisible( true ); } public TableCellRendererTest() { model = new DefaultTableModel(); // ヘッダをセット model.setColumnIdentifiers( columnNames ); getTableData(); JTable table = new JTable( model ); // セルレンダラーを設定する table.setDefaultRenderer( Object.class, new MyCellRenderer() ); // 各カラムの表示幅を指定する int[] width = new int[ columnNames.length ]; width[ 0 ] = 50; width[ 1 ] = 100; width[ 2 ] = 240; for ( int i = 0;i < width.length;i++ ) { TableColumn col = table.getColumnModel().getColumn( i ); col.setMinWidth( width[ i ] ); col.setMaxWidth( width[ i ] ); } // スクロールペイン JScrollPane scrPane = new JScrollPane(); scrPane.getViewport().setView( table ); scrPane.setPreferredSize( new Dimension( 400, 500 ) ); // 上部のパネル JPanel panel = new JPanel(); panel.add( scrPane ); // ボタン JButton reload = new JButton( "RELOAD" ); reload.setActionCommand( "RELOAD" ); reload.addActionListener( this ); // 下部のパネル JPanel lowerPanel = new JPanel(); lowerPanel.add( reload ); // 全体 Container content = this.getContentPane(); content.add( panel, BorderLayout.CENTER ); content.add( lowerPanel, BorderLayout.SOUTH ); } public void actionPerformed( ActionEvent e ) { String command = e.getActionCommand(); System.out.println( "COMMAND=" + command ); } private void getTableData() { for ( int i = 0; i < 10 ; i++ ) { Object[] obj = new Object[ 3 ]; obj[ 0 ] = i * 9; obj[ 1 ] = new String( i + "さん" ); obj[ 2 ] = ( new Date() ).toString(); model.addRow( obj ); } } }

戻る inserted by FC2 system