![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Как проще всего сделать, чтобы пользователь мог вводить в клетки JTable только целые числа (то есть, строки, состоящие только из цифр).
В интернете нашёл несколько примеров наложение InputVerifier на клетку, но как-то они мне кажутся излишне сложными: расширяются сразу несколько классов, включая JTable. Нельзя ли расширять поменьше классов? |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
гм.... в общем при заливке данных в модел писать что то по типу:
data[i][j] = new Integer(); Это сообщение отредактировал(а) goodday1941 - 14.12.2007, 16:23 -------------------- SCJP 6 |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
А у меня данные не заливаются, их пользователь вводит.
|
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
Добавлено через 4 минуты и 39 секунд мда тут ньюансы... сразу на всю колонку прописываем Integer, а не на ячейку :( Добавлено через 5 минут и 19 секунд тоесть с колонкой просто, с ячейкой мутно -------------------- SCJP 6 |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
И что должно получиться, расшифруй пожалуйста? Что будет, если пользователь введёт в клетку не число, а букву?
|
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Не будет проходить "коммит" нового значения. То есть пользователь может вводить всякую фигню, но останется старое значение. -------------------- Lost.... |
|||
|
||||
| goodday1941 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
именно так... ячейка выделяеться красным и не выходит с состояния эдит Добавлено через 3 минуты и 56 секунд я тут малек подправил один из методов модели public Class getColumnClass(int c) { if (c==0) return Integer.class else return String.class; } } вот тут как раз и задаеться тип каждой колонки.... в данном случае в первой колонке тип Integer а во всех остальных - String Добавлено через 11 минут и 23 секунды
вот окончательный пример -------------------- SCJP 6 |
||||
|
|||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
||||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
если вводимое значение соответствует типу данных которые должны находиться в этой ячейке то пройдет комит, так же комит пройдет если ячейка пуста... в других случая комит не пройдет
Добавлено через 5 минут и 10 секунд лучше всего запустите последний пример, сразу все поймете -------------------- SCJP 6 |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Всё же я не совсем понял. Допустим, пользователь ввёл 12,0. Соответствует ли это типу или нет? Это ведь можно интерпретировать как целое число с нулевой дробной частью в русской записи, как два числа через запятую в английской.
Где происходит проверка? Где определяется тип? В getColumnClass? Тогда, получается, достаточно просто переопределить getColumnClass написав наследника от DefaultTableModel? Добавлено через 4 минуты и 13 секунд Я скомпилировал ваш пример и у меня получается вводить что угодно куда угодно. Добавлено через 5 минут и 36 секунд А, нет, в первую колонку не получается вводит нецелые числа. А почему? |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
public Class getColumnClass(int c) {
if (c==0) return Float.class; else if (c == 1) return Integer.class; else return String.class; } первоя колонка - Float вторая - Integer третья - String Добавлено через 1 минуту и 8 секунд
именно так я это и сделал, только наследовался от AbstractTableModel Добавлено через 1 минуту и 47 секунд ПС. скопируйте последний пример, я там поизменял слегка Добавлено через 3 минуты 12,0 - естественно это Флоат -------------------- SCJP 6 |
|||
|
||||
| Dims |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
В общем, у меня однострочная таблица. И ещё я хочу, чтобы последняя клеточка оставалась пустая для возможности добавить в неё дополнительное значение.
Я сделал вот так
Sequence это класс extends Vector<Long> -- строчка из чисел типа Long. Вроде бы, получилось добавлять одну виртуальную клеточку. Но беда в том, что после расширения seq визуально клеточка не добавляется. Наверное, надо как-то какое-то событие выбросить, да? Добавлено через 5 минут и 49 секунд Сделал вот так
не сработало :( Добавлено через 8 минут и 29 секунд Помогло fireTableStructureChanged(); Это правильно? Добавлено через 12 минут и 31 секунду В общем, по исходному вопросу спасибо -- отличный метод! Это сообщение отредактировал(а) Dims - 14.12.2007, 17:55 |
||||
|
|||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
если честно не понял что Вы хотите сделать
Добавлено через 1 минуту и 39 секунд а типо если у вас таблица из трек строк, то после того как во все строки были введены значения добавлять еще одну строку? -------------------- SCJP 6 |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Да. Тут структура таблицы изменилась - вызываем fireTableStructureChanged(), а когда данные fireTableDataChanged. И еще там пару есть. Исходники его посмотрите, все сразу станет понятно. -------------------- Lost.... |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
все понял
-------------------- SCJP 6 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |