Виды программирования, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

Избавление от пробела..
Где можно почитать про *.forms
JOptionPane, Как выделить слово в message жирным?
Как установить иконку для нода в JTree?
У кого есть инфа по SAX & DOM
JTree и окна
Кто-то может бин для Forms показать
JTree + ImageIcon, Не получается перерисовка икон
Canvas => Image, как вырезать из Canvas и превратить..
JList. Добавление элемента.
Нужен Пример по XML
Совмесная работа JIDEA и JBuilder X
Использование смайлов, Захотелось использовать эту возможность
JComBobox и его размеры?
MDI-приложения на Java, как их делать?
Проблема с отрисовкой фрэймов, Проблемы с отрисовкой фрэймом
Как установить миним размер в JFrame, установить придел уменьшения
Нажатие кнопки
JFormattedTextField
Как обновить менюшку
Найти выражение, три точки после
Как создать .exe?, создание Java-Software
MouseDragged ???, Nuzna pomosh!!! O4en'!!!
как сделать так чтобы Character "\n" не находился, проблема с регами...
неправильно происходит редактир-е строки в JTable
StatusBar, Как его создавать?
FolderChooser в Swing?, Что заюзать?
Как скрыть/восстановить столбец в JTable?.., Думаю, можно добавить в FAQ..
Новый исправленный вариант GUI, ("Делаем правильный... глюкнулся")
Лаба по яве, Подскажите
awt или swing, не появляется label
Хоть кто-нибудь покажет пример?
Ant, property
Курсор мыши
Делаем ПРАВИЛЬНЫЙ GUI
Из массива на экран, чем?
Как Вы относитесь к курящим девушкам?
Прежде чем задать вопрос, прочтите это!
Документация и книги по Java, Давайте соберём ссылки
Совершенно не вьезжаю в вывод данных в JTable
работа с фалом БД напрямую
зачем нужен вызов Class.forName
Реализация подсветки синтаксиса, в редакторе текста
Ах этот Random
Не могу сделать приложение с нормальным окном
проблема с удалением строки из модели таблицы, при сортировке строка неудаляется
помогите с YOURKIT
Как нарисовать графики?, Как зделать чтобы стрелочка не маргала
Что-то никак...
CheckBox == Hashtable
ComboBox, прошлый getSelectItem();
как использовать LookAndFeel из IntellJIDEA
событие вставки текста
Ищу библиотеку
Как узнать какой процесс запустил java приложение
jButton.setEnabled(false), продолжает обрабатывать нажатие мышой.
Hashtable, получение списка
Как повернуть JPanel?
Eltima Visual Java/SWING Library
java webstart, как изменить заголовок окна
JTable + JComboBox, вывод таблицы при выборе в КомбоБоксе
Нарды, надо картинки двигать по картинке
Cut/Copy/Paste, вопрос
JFreeReports ошибка при исп. функции
проблеммы с Combobox'ом
помогите плиз с regex (чегото я непоимаю)
row для JTable, Не получается вставить!!!
как сделать круговую диаграмму полупрозрачной
и совсем маленький и простенький вопросик...:)
JCalendar в JCombobox

Платные хостинги     Раскрутка сайта     Книги по программированию


проблема с удалением строки из модели таблицы, при сортировке строка неудаляется

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Уделить плиз немного своего времени, а то зашел в тупик. Проблема при удалении строки из модели данных для таблицы tablePrihod,Строка нормально удаляется если несортировать(хотя если удалить а потом отсортировать то тоже ошибка), а при сортировке вылетает ошибкаКод Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 at java.util.Vector.elementAt(Vector.java:432) at mobiltrade.MobilTableModel.getValueAt(MobilTableModel.java:106) at mobiltrade.SorterTableModel.getValueAt(SorterTableModel.java:26)highlightSyntax('javaMjYzZj','java');Это модель для таблицы tablePrihod:Код public class MobilTableModel extends AbstractTableModel {    int columnCount;    ResultSetMetaData rsMetaData;    String[] columnName;    Object[] row;    Vector rows = new Vector();    Connection conn;    ResultSet rs;    public MobilTableModel(Connection conn, ResultSet rs) {        try {            this.conn = conn;            this.rs = rs;            rsMetaData = rs.getMetaData();            columnCount = rsMetaData.getColumnCount();            columnName = new String[columnCount];            for (int i = 1; i < columnCount + 1; i++) {                  columnName[i - 1] = rsMetaData.getColumnName(i).trim();            }            while (rs.next()) {                row = new Object[columnCount];                for (int y = 1; y < columnCount + 1; y++) {                    row[y - 1] = rs.getString(y);               }                rows.addElement(row);            }        } catch (SQLException sqle2) {        } catch (NullPointerException npe) {        }    }     public int getRowCount() {        return rows.size();    }    public int getColumnCount() {        return columnCount;    }    public String getColumnName(int column) {        return (columnName[column]);    }    public Object[] getRow(int index) {        return ((Object[]) rows.elementAt(index));    }    public Object getValueAt(int row, int column) {        return ((Object[]) rows.elementAt(row))[column];    }    public void removeRow(int row) {        rows.removeElementAt(row);        rows.setSize(getRowCount());        fireTableRowsDeleted(row, row);    }}highlightSyntax('javazMwNTk','java');Это модель сортировки для этой таблицы:Код public class SorterTableModel extends AbstractTableModel {    private Row[] rows;    private MobilTableModel model;    int sortColumn;    public SorterTableModel(MobilTableModel m) {        model = m;        rows = new Row[model.getRowCount()];        for (int i = 0; i < rows.length; i++) {            rows[i] = new Row();            rows[i].index = i;        }    }    public void sort(int c) {        sortColumn = c;        Arrays.sort(rows);    }    public Object getValueAt(int r, int c) {        return model.getValueAt(rows[r].index, c);    }    public boolean isCellEditable(int r, int c) {        return model.isCellEditable(rows[r].index, c);    }    public void setValueAt(Object aValue, int r, int c) {        model.setValueAt(aValue, rows[r].index, c);    }    public int getRowCount() {        return model.getRowCount();    }    public int getColumnCount() {        return model.getColumnCount();    }    public String getColumnName(int c) {        return model.getColumnName(c);    }    private class Row implements Comparable {        public int index;        public int compareTo(Object other) {            Row otherRow = (Row) other;            Object a = model.getValueAt(index, sortColumn);            Object b = model.getValueAt(otherRow.index, sortColumn);            if (a instanceof Comparable) {                return ((Comparable) a).compareTo(b);            } else {                return a.toString().compareTo(b.toString());            }        }    }    public void removeRow(int r) {        model.removeRow(rows[r].index);        fireTableRowsDeleted(rows[r].index, rows[r].index);    }}highlightSyntax('javaMyNmZh','java');Тут при двойном клике по названию столбца сортируетсяКод mobileTableModel = new MobilTableModel(conn, rs);sorterTableModel = new SorterTableModel(mobileTableModel);tablePrihod.getTableHeader().addMouseListener(new MouseAdapter() {    public void mouseClicked(MouseEvent event) {           if (event.getClickCount() < 2) return;               int tableColumn = tablePrihod.columnAtPoint(event.getPoint());               int modelColumn = tablePrihod.convertColumnIndexToModel(tableColumn);               sorterTableModel.sort(modelColumn);           };     }); tablePrihod.setModel(sorterTableModel);highlightSyntax('java4YzQ3N','java');

- А в какой строке брошен иксепшн?

- Да там же индекс вываливаливается - очень похоже, что в обработчике индекс столбца левый какой-то.

- Да я понимаю, но не хочется тратить время на угадывание, когдa автор мог бы указать где же эти строки 106 и 26.

- Но на первый взгляд все достаточно нормально. Но я бы проверил значения row и column - просто напечатал бы. И все стало бы ясно.

- Код   public Object getValueAt(int row, int column) {106:       return ((Object[]) rows.elementAt(row))[column];   }   public void setValueAt(Object aValue, int r, int c) { 26:      model.setValueAt(aValue, rows[r].index, c);   }highlightSyntax('java3MjlkM','java');Нет? В стеке ошибок можно и по именам функций ориентироваться

- А случайно нe Код public Object getValueAt(int r, int c) {26:        return model.getValueAt(rows[r].index, c);    }highlightSyntax('javaQ4MDVi','java');Нет, товарищи, давайтe уважать других людей и нe загадывать загадки. Здесь всe понятнo, нo былo бy немного быстрее с указаниem строк. Добавлено @ 18:43 Можно попробовать добавить Код if (event.getClickCount() < 2) return;int tableColumn = tablePrihod.columnAtPoint(event.getPoint());if (tableColumn == -1) // <----return; // <-----//...highlightSyntax('javaiNWI3N','java');может простo клик не там где надо был?

- Код public class SorterTableModel extends AbstractTableModel {   private Row[] rows;highlightSyntax('javaMmIxMj','java'); что-то не видно удаления из rows в этом классе

- А там и нету такого. Это уже в DefaultTableModel появляется только.

- Подозрение укрепилось:Имеем массив Rows[] rows в SorterTableModel и массив Vector rows в MobilTableModel.Изначально, до удаления, их размерности равны, скажем, по 6.Вызываем SorterTableModel.removeRow(int r), размер Vector rows становится 5, Rows[] rows остается 6.При сортировке вызываем Arrays.sort(Object[]), который неявно вызывает функцию compareTo внутреннего класса Row для пар объектов из Rows[] rows, в том числе и объект с индексом 6:Код           Object a = model.getValueAt(index, sortColumn);           Object b = model.getValueAt(otherRow.index, sortColumn);highlightSyntax('javaTVkNDM','java');Но в Vector model.rows ЭТОГО ИНДЕКСА УЖЕ НЕТ Решение: при удалении из Vector rows удалять и из Rows[] rows

- Вот эти строки:Код public class MobilTableModel extends AbstractTableModel {......public Object getValueAt(int row, int column) {return ((Object[]) rows.elementAt(row))[column];   //- вот 106 строка}}highlightSyntax('javaU2N2Qw','java');Код public class SorterTableModel extends AbstractTableModel {....public Object getValueAt(int r, int c) {return model.getValueAt(rows[r].index, c);  // - вот 26 строка}highlightSyntax('javaWYzM2M','java');

- iqon ты скорее всего прав:Вот переделалКод public void removeRow(int r) {        System.out.println("rows.length  до "+rows.length);        model.removeRow(rows[r].index);        rows = new Row[model.getRowCount()];        for (int i = 0; i < rows.length; i++) {            rows[i] = new Row();            rows[i].index = i;        }        System.out.println("rows.length после "+rows.length);        System.out.println("rows[r].index "+rows[r].index);        fireTableRowsDeleted(rows[r].index, rows[r].index);    }highlightSyntax('javaiZjE2O','java');оно удаляет нормально кроме последнегоКод первую строку удаляет нормально----------------------------------------------rows.length  до 4rows.length после 3rows[r].index 2----------------------------------------------последнюю неудаляетrows.length  до 3rows.length после 2Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 at mobiltrade.SorterTableModel.removeRow(SorterTableModel.java:75) at mobiltrade.MainFrame.buttonDel_actionPerformed(MainFrame.java:442)highlightSyntax('javajZGIyN','java');75 строка: fireTableRowsDeleted(rows[r].index, rows[r].index); - тут ругается

- Судя по коду, у тебя не будет удаляться строка с максимальным индексом, а не только последняя.Опять-таки на пальцах - пусть изначально размер массивов = 6.Ты удаляешь элемент 6 в model, создаешь заново Row[] rows на основе model, т.е. размер и rows, и model теперь = 5, но листенерам сообщаешь, что ты удалил 6 элемент (в диапазоне от 6 до 6 )Код fireTableRowsDeleted(rows[r].index, rows[r].index);highlightSyntax('javazZjOGY','java');На самом деле rows[6].index УЖЕ НЕТпоэтому нужно писать типа Код fireTableRowsDeleted(6, 6);highlightSyntax('javaODRmYT','java');илиКод fireTableRowsDeleted(r, r);highlightSyntax('javazVhZTd','java');

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | программирование 1с предприятие | язык программирования pascal | виды программирования | программирование процессоров | язык программирования 1с | программирование assembler | методология программирования | прикладное программирование | программирование turbo pascal | парадигмы программирования | удаленная программирование | программирование управления | справочник программирования | задачи математическому программированию | методики программирования | программирование outlook | компьютерное программирование | программирование деревья | высокоуровневое программирование | программирование delphi скачать | программирование сигнализации | теория языков программирования | программирование микропроцессоров | обоснование языка программирования | программирование win32 | Ссылки

Все про программирование управления