- PR -

JTableのセルの編集

投稿者投稿内容
a-san
常連さん
会議室デビュー日: 2004/03/15
投稿数: 30
投稿日時: 2004-07-13 15:16
以下のソースではうまくいっているので参考にしてみてください。
--- TestTableRenderer.java
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

/** 左が普通のセル・レンダラー、右が自作のセル・レンダラー */
public class TestTableRenderer extends JTable {

TestTableRenderer() {
super(new Object[][] {
new Object[] { "Item1-1", "Item1-2" },
new Object[] { "Item2-1", "Item2-2" },
new Object[] { "Item3-1", "Item3-2" }},
new Object[] { "DefaultTableCellRenderer", "TestCellRenderer"});

}
TableCellRenderer renderer = new TestCellRenderer();
public TableCellRenderer getCellRenderer(int row, int column) {
if (column == 0) return getDefaultRenderer(String.class);
return renderer;
}
class TestCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.yellow); // 選択時は黄色
}
else {
c.setBackground(Color.white); // 非選択時は白
}
return c;
}
}

public static void main(String[] args) {
JFrame frame = new JFrame();
JTable table = new TestTableRenderer();
frame.getContentPane().add(new JScrollPane(table));
frame.setSize(640, 480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
jin
会議室デビュー日: 2003/07/15
投稿数: 8
投稿日時: 2004-07-15 09:14
a-sanありがとうございました。
そのとおりにしたら無事解決できました。
a-san
常連さん
会議室デビュー日: 2004/03/15
投稿数: 30
投稿日時: 2004-07-29 12:29
JTableを拡張してセルのマージを行っているプログラムを見つけました。
よければ参考にしてください。
http://www.cutt.co.jp/book/4-87783-053-7.html

スキルアップ/キャリアアップ(JOB@IT)