0

我在eclipse中使用Window Builder插件来制作所有的可视化组件,我添加了一个JTable,起初它是一个简单的JTable,它可以正确显示数据。因为我需要 JTable 的数据是不可编辑的,所以我创建了一个模型来使用方法 isCellEditable。我的代码是这样的。

public class MyTableModel extends AbstractTableModel {

        private static final long serialVersionUID = 1L;
        private String[] columnNames;
        private Object[][] data;

        public MyTableModel(Object[][] sentdata, String[] cnames){
            columnNames = cnames;
            data = sentdata;
        }

        @Override
        public int getColumnCount() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public int getRowCount() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            // TODO Auto-generated method stub
            return null;
        }

        public boolean isCellEditable (int row, int column){
            return false;
        }

    }//fin del modelo

在类的构造函数中是这个

String[] NombresdeColumnas = {"Nombre del Producto", "Cantidad en Inventario", "Precio Unitario"}; 
RegistroInventario inventariodatos = new RegistroInventario();
Object[][] data = inventariodatos.regresarInventario();

MyTableModel model1 = new MyTableModel(data, NombresdeColumnas);

Table_Inventario = new JTable(model1);
Table_Inventario.setGridColor(Color.gray);

JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setViewportView(Table_Inventario);

它没有显示任何东西,但是当我这样做时:

Table_Inventario = new JTable(data, NombresdeColumnas);

它工作得很好,我不知道错误是否与 de Window Builder form eclipse 或代码中的问题有关,因为我是新做 JTables。

4

2 回答 2

2

你的问题return 0;

public int getColumnCount() {

public int getRowCount() {

改用DefaultTableModel,确定是否没有真正重要的问题可AbstractTableModel用于Object[][]数据或Vector of Vectors

make me senceAbstractTableModel用于基于HashMapjava.util.Listei的模型

于 2012-10-28T19:02:52.983 回答
2

您的AbstractTableModel不包含任何数据。

您通过getColumnCountandgetRowCount方法的实现表明它包含零行和零列。

即使你调整了这些方法,你也不会使用在构造函数中传递的数据,因为你总是nullgetValueAt方法中返回。

我认为您应该开始阅读表格教程中的“如何创建TableModel”部分

于 2012-10-28T19:13:30.460 回答