さて、私は上記の表でいくつかのコンポーネントをレンダリングしようとしています。カスタム TableCellRenderer を実装することでそれが完了したことを私は知っています。これは、通常の JTable でうまく機能します。たとえば、次のようなことを行います。
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class Test
{
public static void main(String[] argv)
{
String[] columnNames = {"First Name","Last Name","nr"};
Object[][] data = {{"Homer","Simpson","1"},{"Madge","Simpson","2"},{"Bart","Simpson","3"},
{"Lisa","Simpson","4"},};
DefaultTableModel model = new DefaultTableModel(data,columnNames);
JTable table = new JTable(model);
table.getColumnModel().getColumn(2).setCellRenderer(new TableCellRenderer(){
final JButton button = new JButton();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
button.setText(value.toString());
return button;
}
});
JFrame f = new JFrame();
f.setSize(300,300);
f.add(new JScrollPane(table));
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
JIDEのSortable-およびAggregateTableでも動作しますが、これらのテーブルをXdevのテーブルに置き換えるとすぐに、コンポーネントがレンダリングされなくなるため、TableColumn.getCellRenderer()が正しい値を返しても、CellRendererが正しく設定されていないようですクラス。Xdevのテーブルでコンポーネントをレンダリングする方法を知っている人はいますか? 前もって感謝します!