0

好吧,我正在尝试在上面提到的表格中呈现一些组件。我知道这是通过实现自定义 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 的表中呈现组件?提前致谢!

4

0 回答 0