| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > JTextPane компоненты |
| Автор: hail 8.4.2007, 13:26 | ||
я уже создавал подобную тему, но там меня больше интересовала позиция компонента, и вот добрался до самих компонентов и был очень удивлен. Вот код:
но таким способом не получается получить компонент, а очень нужно. Как получить компонент который я вставлял? Потому что при таком коде результат выглядит так: Component: javax.swing.text.ComponentView$Invalidator[,0,0,0x0,invalid] Component: javax.swing.text.ComponentView$Invalidator[,0,0,0x0,invalid] Component: javax.swing.text.ComponentView$Invalidator[,0,0,0x0,invalid] Component: javax.swing.text.ComponentView$Invalidator[,0,0,0x0,invalid] Ну и с такими компонентами дальше работать не получается. Заранее благодарен за помощь. |
| Автор: RebornCrusader 9.4.2007, 04:56 |
| Вчерась перед сном листал Портянкина "Swing - Эффектные пользовательские интерфейсы", там на эту тему было что-то интересное. Вечером дома гляну, если не забуду. А вообще лучше сам купи купи такую ;) |
| Автор: hail 9.4.2007, 12:22 |
| Ну буду ждать, а то похоже больше ни где этого нет и ни кто этого не видел, где я уже только не искал |
| Автор: AntonSaburov 9.4.2007, 12:40 |
| Так надо не в форму вставлять а в ее контекстную панель. form.getContextPane().add(....) |
| Автор: LSD 9.4.2007, 14:02 |
| Посмотри эту http://forum.vingrad.ru/topic-113978.html. |
| Автор: hail 9.4.2007, 15:49 | ||||
Да, я сделал, но проблему это не решило
Я смотрел ее раньше, но как ты там и говорил, сериализовать текстовую модель с кнопками, картинками,... не получится (у меня не получилось). Да, сериализация этой радости есть одной из причин этого вопроса. Если я щелкаю на компоненте мышкой то в слушателе e.getComponent() работает безотказно и позицию получить можно и все ок. Я видел пример "имитация щелчка мыши", даже думал перещелкать таким образом всю текстовую область чтоб собрать все компоненты, но выглядит это полным бредом. А из моего кода видно, что с точки зрения текстовой модели вставленный в нее компонент это такая штука javax.swing.text.ComponentView$Invalidator[,0,0,0x0,invalid] которая хранит только внешний вид компонента по которому нельзя(у меня не получилось) определить что это за компонент, и то он invalid. Отслеживать позиции компонентов с учетом общего редактирования и возможности удаления самих компонентов из текстовой области, и сохранять их в массив, а потом восстанавливать - ммм, не знаю. Логично создавать какие-то теги, но хочется работать в режиме "что видишь - то и получишь", а значит теги нужно заменять компонентом, а при сохранении наоборот, а значит нужно получить компоненты из текстовой области В какую сторону двигаться и как??? Как можно организовать работу с тегами, или что-то подобное? |
| Автор: AntonSaburov 9.4.2007, 17:16 |
| Может тогда лэйаут совсем убрать ? setLayout(null) - и тогда все координаты абсолютные и "надержные" |
| Автор: hail 9.4.2007, 17:32 |
| попробовал, не помогло. Результат тот же, но в любом случае возвращает только вид компонента, буду терить StyleDocument... |
| Автор: Stjopka 10.4.2007, 11:11 |
| По-моему тут действительно надо использовать не getComponent, а что-нибудь из StyledDocument. Может быть getCharacterElement(num). |
| Автор: LSD 11.4.2007, 14:28 | ||
|
| Автор: hail 12.4.2007, 18:29 |
| 100% работает супер, все как надо......... спасибо. |
| Автор: LSD 13.4.2007, 09:19 |
| Не забывай помечать вопрос как решенный. |