Не могу добавить массив типов объектов в JTable - PullRequest
0 голосов
/ 28 декабря 2018

Я создал объект типа arrayList, но таблица все еще не идентифицирует его как объект и выдает ошибку.

Это ошибка, которую он создает.

Не найдено подходящего метода для добавления.(объект [])

Ниже приведен код, используемый:

ArrayList<Object> CartItems = new ArrayList<Object>();

cartCheckout.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        Cartgui.setVisible(true);
        for (int i = 0; i < candyList.size(); i++) {
            String name = candyList.get(i).getCandyName();
            int weight = candyList.get(i).getweight();
            int priceLbs = candyList.get(i).getPriceLbs();
            Object[] data = {name, weight, priceLbs};

            Cartgui.add(data);//this line is producing error
        }
    }
});

Я ожидаю, что выходные данные увидят имя, вес и цену в табличной форме в таблице.cartgui это имя таблицы

1 Ответ

0 голосов
/ 28 декабря 2018

Метод myTable.add (что-то) не делает то, что вы думаете.Вы хотели бы сделать что-то более похожее на myTable.getTableModel (). AddData (что-то), что является концептуально правильным, хотя такого метода addData () не существует.

Возможно, вы захотите сделать что-то вроде

TableModel myModel = new DefaultTableModel(something);
JTable myTable = new JTable(myModel);

, где есть несколько опций для что-то , потому что DefaultTableModel имеет несколько конструкторов.

Однако я лично почти никогда не использую DefaultTableModel.Вместо этого я делаю что-то вроде

class MyTableModel extends AbstractTableModel {
    //override getRowCount(), getColumnCount(), getColumnName(), getValueAt(), and possibly isCellEditable() and setValueAt()
}

MyTableModel myModel = new MyTableModel(); // or pass parameters since you're writing the constructor(s)
JTable myTable = new JTable(myModel);

, потому что, в конце концов, это обычно проще и более удовлетворительно.

[edit: И если вы хотите вызвать myModel.addData (что-то) изActionListener, то вам нужно идти по пути AbstractTableModel, поскольку DefaultTableModel не имеет этой функциональности.Поскольку MyTableModel является вашим классом, вы можете написать для него метод addData ().]

Кстати, ваши переменные CartItems и Cartgui нарушают стандартные соглашения о кодировании Java.Они должны начинаться с строчных букв.Однако это никак не влияет на то, работает ваш код или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...