
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 2006/05/17 04:17:46 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 2006/05/17 04:17:46 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 );
}
}
}
戻る