JTable из AbstractTableModel не отображается

Я использую плагин Window Builder в eclipse, чтобы сделать все визуальные компоненты, и я добавляю 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);

это работало просто отлично, я не знаю, связана ли ошибка с затмением формы Window Builder или с кодом, вызывающим новое создание JTables.


person Pedro    schedule 28.10.2012    source источник


Ответы (2)


ваша проблема return 0; в

public int getColumnCount() {

и

public int getRowCount() {

вместо этого используйте DefaultTableModel, конечно, если нет действительно важной проблемы с использованием AbstractTableModel для Object[][] данных или Vector of Vectors

использование AbstractTableModel дает мне смысл для модели, основанной на HashMap или java.util.List e.i.

person mKorbel    schedule 28.10.2012
comment
спасибо, чувак, я думал, что методы не так важны, я думаю, что поищу немного больше об AbstractTableModel. - person Pedro; 28.10.2012
comment
может начаться с - person mKorbel; 28.10.2012

Ваш AbstractTableModel не содержит никаких данных.

Вы указываете, что он содержит ноль строк и ноль столбцов с помощью вашей реализации методов getColumnCount и getRowCount.

И даже когда вы настраиваете эти методы, вы не используете данные, переданные в конструкторе, поскольку вы всегда возвращаете null в методе getValueAt.

Я думаю, вам следует начать читать 'Как создать TableModel'< /a> раздел из учебника по таблицам

person Robin    schedule 28.10.2012