|
|
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть 2 задачи, решение которых пока не придумывается.... Задача раз: по умолчанию ячейка переходит в редактирование по двойному клику, но нужно сделать как в exel, чтобы ничего не нажимая, просто при вводе в выделенную ячейку чего-либо, старое значение перетиралось, а новое вводилось. Я это решила, повесив обработку на keyPress, НО так получается ввести только 1 символ, потому что при каждом нажатии он очищает ячейку, как дать ему знать когда очищать а когда нет?! Пример решения: Код: java 1. 2. 3. 4. 5. 6. задача два: введенные данные в ячейку, таблица "видит" при перекликивании на любую другую ячейку, а нужно сделать так, чтобы введенное значение принималось сразу, без дополнительных телодвижений - это вообще реализуемо? Я пробовала показать ему все эти fireбла-бла, но чтобы их вызвать, нужно таблице сообщить что редактирование закончено, а как ей это сообщить без каких-либо действий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 12:49 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palunнужно таблице сообщить что редактирование закончено, а как ей это сообщить без каких-либо действий? Как в Excell'е - на Enter. - в каждой ячейке буфер (массив) символов. - на каждый чих (repaint) нужно всё очищать и по новой рисовать из буфера (модели). MVC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:07 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, PS если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать. Оно вам надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:09 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, 1.1 Почему бы на фокус+выбор в таблице не повесить начало редактирования? Зачем обязательно по нажатию? 1.2 Если таки делать по нажатию, то очевидно что ваш хук (listener) после начала редактирования надо убрать. Либо добавить условие в выше приведенный метод и флаг. Либо убирать listener через removeKeyListerner. 1.3 Совсем не понятно желание удалять значение вместо того чтобы редактировать то что на данный момент находится в модели 2. Не очень понятно зачем. Но это не сложно решить реализацией своего CellEditor, которые все изменения текста будет сразу писать в TableModel. Опять же, если вам нужно каждое обновление теста писать в модель, это ведь ещё не значит что редактирование на каждое нажатие нужно останавливать. 3. Перестаньте говнокодить в NetBeans дизайнере. Давайте внятные имена всем переменным всех контролов включая JLabel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:15 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Petro123Oksana Palun, PS если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать. Оно вам надо? Да, ну, какой с нуля. Все фичи не сложно добавить, если знать Swing. Мы одну ERP систему с Delphi портировали. Без проблем перенесли всё поведение таблиц, полей и других контролов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:17 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Petro123Oksana Palun, PS если в комопоненте всё заточено на другую событийную обработку, то вам практически с нуля надо будет всё писать. Оно вам надо? Мне вообще нет. Есть запрос на реализацию, если малой кровью решить не получится, то городит огороды я точно не буду. Я то сама подумала-подумала и не придумала, но мало ли я чего-то не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:18 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
BlazkowiczOksana Palun, 1.3 Совсем не понятно желание удалять значение вместо того чтобы редактировать то что на данный момент находится в модели нужно чтобы было 2 варианта редактирования: 1) перетирать существующее значение начиная вводить что-то новое и 2) редактировать как сейчас, тобишь изменять существующее значение по двойному клику BlazkowiczOksana Palun, 3. Перестаньте говнокодить в NetBeans дизайнере. Давайте внятные имена всем переменным всех контролов включая JLabel. я специально поменяла названия на стандартные, т.к. договор о коммерческой тайне и все дела )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:22 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palunя специально поменяла названия на стандартные, т.к. договор о коммерческой тайне и все дела )) Какой ужас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:56 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, Код: java 1. Пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 13:58 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana Palun, Хм, что-то я не обратил внимания. Но ведь, когда начинаешь что-то набирать редактирование само, ведь активируется? Разве по-умолчанию не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:00 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
Oksana PalunЗадача раз: по умолчанию ячейка переходит в редактирование по двойному клику, но нужно сделать как в exel, чтобы ничего не нажимая, просто при вводе в выделенную ячейку чего-либо, старое значение перетиралось, а новое вводилось. Запутали вы меня нахрен своим keyPressed. Он тут вообще не нужен. - редактирование в JTable и так начинается по любому вводу текста. Поэтому проблема не понятна. - по поводу мыши, DefaultCellEditor.clickCountToStart и так по-умолчанию равен 1 - по поводу замены значения, на сколько я знаю, обычно делают не просто замену. Обычно начинается редактирование, но при этом по-умолчанию выделяется весь текст. Таким образом новый ввод заменяет старое значение. Но при желании курсором его можно и сохранить. Пример реализации https://tips4java.wordpress.com/2008/10/20/table-select-all-editor/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:07 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
там довольно-таки геморойная хрень вылазит, сам полгода назад делал, отдельно модель, дополнительно cellRenderer и CellEditor писал. Работает у меня так, что когда жмут таб, переходит в следующую ячейку в режиме редактирования. Естественно и по клику мыши. Я думаю что очистку текста вам особо не нужно делать, надо чтобы текст выделялся в редактируемой ячейке, тогда юзер по щелчку переходит в режим редактирования, сразу пишет текст и выделенный заменяется новым - стандартное поведение как и везде. Мне сейчас некогда подробно описывать (через полчаса уезжаю на 1.5 недели в леса :) ), но все работало сносно как в экселе, прилагаю пару файлов, там конечно немного наговнокодено, но думаю разберетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:15 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
модель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:16 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
целлЭдитор. Заодно может мой код покритикуют, носом потыкают в грязные места))) хотя проект отложен в итоге и уже не актуален ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:17 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
NixicЗаодно может мой код покритикуют, носом потыкают в грязные места))) - Сильно хромает английский в именах идентификаторов. - Рефакторинг extract variable очень по тебе скучает - Имена переменных сокращаются до аббревиатур там где этого делать не стоило - CreateRequestProcessingTable.createRequestProcessingTable() это за гранью. Вся простыня заменяется двумя-тремя массивами - Аналогично за копипасту простыней в RequestProcessingTableModel надо бы линейкой по рукам. Биндинг можно было бы и автоматизировать. - Не стоило TableModel превращать в DomainModel. Куча бизнес-логики setValueAt. Такая логика должна быть в отдельных методах. Есть у бизнес-логики тенденция к переиспользованию. Здесь же она прибита намертво к Swing и JTable. - RequestProcessingTableCellEditor делает кучу всего, что непосредственно к CellEditor отношения не имеет. Тут нужны минимум 3 класса. Код на троечку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 14:36 |
|
||
|
Варианты редактирования JTable
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNixicЗаодно может мой код покритикуют, носом потыкают в грязные места))) - Сильно хромает английский в именах идентификаторов. - Рефакторинг extract variable очень по тебе скучает - Имена переменных сокращаются до аббревиатур там где этого делать не стоило - CreateRequestProcessingTable.createRequestProcessingTable() это за гранью. Вся простыня заменяется двумя-тремя массивами - Аналогично за копипасту простыней в RequestProcessingTableModel надо бы линейкой по рукам. Биндинг можно было бы и автоматизировать. - Не стоило TableModel превращать в DomainModel. Куча бизнес-логики setValueAt. Такая логика должна быть в отдельных методах. Есть у бизнес-логики тенденция к переиспользованию. Здесь же она прибита намертво к Swing и JTable. - RequestProcessingTableCellEditor делает кучу всего, что непосредственно к CellEditor отношения не имеет. Тут нужны минимум 3 класса. Код на троечку. Спасибо большое, я в принципе себя так и оцениваю, как программиста. Замечания учту, к списку буду периодически возвращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39200601&tid=2124177]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 394ms |

| 0 / 0 |
