好吧,我正在尝试在上面提到的表格中呈现一些组件。我知道这是通过实现自定义 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 替换这些表,组件就不再呈现,所以似乎 CellRenderer 设置不正确,即使 TableColumn.getCellRenderer() 返回正确班级。那么有谁知道如何在 Xdev 的表中呈现组件?提前致谢!