powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Варианты редактирования JTable
17 сообщений из 17, страница 1 из 1
Варианты редактирования JTable
    #39200506
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть 2 задачи, решение которых пока не придумывается....
Задача раз: по умолчанию ячейка переходит в редактирование по двойному клику, но нужно сделать как в exel, чтобы ничего не нажимая, просто при вводе в выделенную ячейку чего-либо, старое значение перетиралось, а новое вводилось. Я это решила, повесив обработку на keyPress, НО так получается ввести только 1 символ, потому что при каждом нажатии он очищает ячейку, как дать ему знать когда очищать а когда нет?!
Пример решения:
Код: java
1.
2.
3.
4.
5.
6.
private void jTableKeyPressed(java.awt.event.KeyEvent evt) {                                              
       if (jTable.getCellEditor() != null){jTable.getCellEditor().cancelCellEditing();}
       jTable.setValueAt("", jTable.getSelectedRow(), jTable.getSelectedColumn());
       jTable.editCellAt(jTable.getSelectedRow(),  jTable.getSelectedColumn());
    }
}              


задача два: введенные данные в ячейку, таблица "видит" при перекликивании на любую другую ячейку, а нужно сделать так, чтобы введенное значение принималось сразу, без дополнительных телодвижений - это вообще реализуемо? Я пробовала показать ему все эти fireбла-бла, но чтобы их вызвать, нужно таблице сообщить что редактирование закончено, а как ей это сообщить без каких-либо действий?
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200517
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunнужно таблице сообщить что редактирование закончено, а как ей это сообщить без каких-либо действий?
Как в Excell'е - на Enter.
- в каждой ячейке буфер (массив) символов.
- на каждый чих (repaint) нужно всё очищать и по новой рисовать из буфера (модели).
MVC
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,
PS
если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать.
Оно вам надо?
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200533
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,

1.1 Почему бы на фокус+выбор в таблице не повесить начало редактирования? Зачем обязательно по нажатию?
1.2 Если таки делать по нажатию, то очевидно что ваш хук (listener) после начала редактирования надо убрать. Либо добавить условие в выше приведенный метод и флаг. Либо убирать listener через removeKeyListerner.
1.3 Совсем не понятно желание удалять значение вместо того чтобы редактировать то что на данный момент находится в модели
2. Не очень понятно зачем. Но это не сложно решить реализацией своего CellEditor, которые все изменения текста будет сразу писать в TableModel. Опять же, если вам нужно каждое обновление теста писать в модель, это ведь ещё не значит что редактирование на каждое нажатие нужно останавливать.
3. Перестаньте говнокодить в NetBeans дизайнере. Давайте внятные имена всем переменным всех контролов включая JLabel.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200537
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Oksana Palun,
PS
если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать.
Оно вам надо?
Да, ну, какой с нуля. Все фичи не сложно добавить, если знать Swing. Мы одну ERP систему с Delphi портировали. Без проблем перенесли всё поведение таблиц, полей и других контролов.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200541
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Oksana Palun,
PS
если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать.
Оно вам надо?
Мне вообще нет. Есть запрос на реализацию, если малой кровью решить не получится, то городит огороды я точно не буду. Я то сама подумала-подумала и не придумала, но мало ли я чего-то не знаю...
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200548
Oksana Palun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczOksana Palun,
1.3 Совсем не понятно желание удалять значение вместо того чтобы редактировать то что на данный момент находится в модели

нужно чтобы было 2 варианта редактирования: 1) перетирать существующее значение начиная вводить что-то новое и 2) редактировать как сейчас, тобишь изменять существующее значение по двойному клику

BlazkowiczOksana Palun,
3. Перестаньте говнокодить в NetBeans дизайнере. Давайте внятные имена всем переменным всех контролов включая JLabel.

я специально поменяла названия на стандартные, т.к. договор о коммерческой тайне и все дела ))
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200589
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palunя специально поменяла названия на стандартные, т.к. договор о коммерческой тайне и все дела ))
Какой ужас.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200596
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,

Код: java
1.
 JTable.setSurrendersFocusOnKeystroke(true);


Пробовали?
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200601
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Palun,

Хм, что-то я не обратил внимания. Но ведь, когда начинаешь что-то набирать редактирование само, ведь активируется? Разве по-умолчанию не так?
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200611
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana PalunЗадача раз: по умолчанию ячейка переходит в редактирование по двойному клику, но нужно сделать как в exel, чтобы ничего не нажимая, просто при вводе в выделенную ячейку чего-либо, старое значение перетиралось, а новое вводилось.
Запутали вы меня нахрен своим keyPressed. Он тут вообще не нужен.
- редактирование в JTable и так начинается по любому вводу текста. Поэтому проблема не понятна.
- по поводу мыши, DefaultCellEditor.clickCountToStart и так по-умолчанию равен 1
- по поводу замены значения, на сколько я знаю, обычно делают не просто замену. Обычно начинается редактирование, но при этом по-умолчанию выделяется весь текст. Таким образом новый ввод заменяет старое значение. Но при желании курсором его можно и сохранить.
Пример реализации
https://tips4java.wordpress.com/2008/10/20/table-select-all-editor/
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200625
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там довольно-таки геморойная хрень вылазит, сам полгода назад делал, отдельно модель, дополнительно cellRenderer и CellEditor писал.
Работает у меня так, что когда жмут таб, переходит в следующую ячейку в режиме редактирования. Естественно и по клику мыши.
Я думаю что очистку текста вам особо не нужно делать, надо чтобы текст выделялся в редактируемой ячейке, тогда юзер по щелчку переходит в режим редактирования, сразу пишет текст и выделенный заменяется новым - стандартное поведение как и везде.
Мне сейчас некогда подробно описывать (через полчаса уезжаю на 1.5 недели в леса :) ), но все работало сносно как в экселе, прилагаю пару файлов, там конечно немного наговнокодено, но думаю разберетесь.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200626
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модель
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200630
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
целлЭдитор.
Заодно может мой код покритикуют, носом потыкают в грязные места)))
хотя проект отложен в итоге и уже не актуален
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39200655
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicЗаодно может мой код покритикуют, носом потыкают в грязные места)))
- Сильно хромает английский в именах идентификаторов.
- Рефакторинг extract variable очень по тебе скучает
- Имена переменных сокращаются до аббревиатур там где этого делать не стоило
- CreateRequestProcessingTable.createRequestProcessingTable() это за гранью. Вся простыня заменяется двумя-тремя массивами
- Аналогично за копипасту простыней в RequestProcessingTableModel надо бы линейкой по рукам. Биндинг можно было бы и автоматизировать.
- Не стоило TableModel превращать в DomainModel. Куча бизнес-логики setValueAt. Такая логика должна быть в отдельных методах. Есть у бизнес-логики тенденция к переиспользованию. Здесь же она прибита намертво к Swing и JTable.
- RequestProcessingTableCellEditor делает кучу всего, что непосредственно к CellEditor отношения не имеет. Тут нужны минимум 3 класса.

Код на троечку.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39209911
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNixicЗаодно может мой код покритикуют, носом потыкают в грязные места)))
- Сильно хромает английский в именах идентификаторов.
- Рефакторинг extract variable очень по тебе скучает
- Имена переменных сокращаются до аббревиатур там где этого делать не стоило
- CreateRequestProcessingTable.createRequestProcessingTable() это за гранью. Вся простыня заменяется двумя-тремя массивами
- Аналогично за копипасту простыней в RequestProcessingTableModel надо бы линейкой по рукам. Биндинг можно было бы и автоматизировать.
- Не стоило TableModel превращать в DomainModel. Куча бизнес-логики setValueAt. Такая логика должна быть в отдельных методах. Есть у бизнес-логики тенденция к переиспользованию. Здесь же она прибита намертво к Swing и JTable.
- RequestProcessingTableCellEditor делает кучу всего, что непосредственно к CellEditor отношения не имеет. Тут нужны минимум 3 класса.

Код на троечку.
Спасибо большое, я в принципе себя так и оцениваю, как программиста. Замечания учту, к списку буду периодически возвращаться.
...
Рейтинг: 0 / 0
Варианты редактирования JTable
    #39211306
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

я кода самого не видел, но по-моему сугубо личному мнению сам свинг заставлял говнокодить. Каких только велосипедов я на нем не создавал.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Варианты редактирования JTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]