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のテーブルに置き換えるとすぐに、コンポーネントがレンダリングされなくなるため、TableColumn.getCellRenderer()が正しい値を返しても、CellRendererが正しく設定されていないようですクラス。Xdevのテーブルでコンポーネントをレンダリングする方法を知っている人はいますか? 前もって感謝します!

4

0 に答える 0