| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Передача параметров |
| Автор: Bulat 14.6.2006, 13:58 | ||
Вообщем-то, вот одна обрабока событий в котором я получаю некоторые данные(userId, recordId) и пытаюсь их передать в другую mi1.addMouseListener(new Item1Click(userId, recordId));, но они не передаются. Как еще их можно передать, или куда еще можно запихнуть обработку mi1.addMouseListener(new Item1Click(userId, recordId));, чтоб мои данные передовались?
|
| Автор: batigoal 14.6.2006, 14:14 |
| А ты уверен, что они не передаются? Может, передаются, но равны null? |
| Автор: powerOn 14.6.2006, 14:16 |
интересно, а что за класс Item1Click ? И хотелось бы узнать зачем в Listener создавать JMenuItem. Это не очень красиво выглядит. |
| Автор: Bulat 14.6.2006, 14:21 | ||||||
Ну естественно, передается null, но здесь я их получаю, а передается null, что соответственно = не передается. Добавлено @ 14:27
Если тебе так интересно, но тут ничего интересного нет
Ну давай разберем, этот момент. Мне нужно динамически создающееся popupmenu, на каждый пункт(при нажатии) необходимо навешать обработку. Если ты мне предложишь более лучший и подходящий вариант с удовольствием его разберу Уж звыняйте, но на яве писал кое-что, но именно c GUI первый проект и сразу довольно серьезный. |
| Автор: powerOn 14.6.2006, 14:43 | ||
при таком раскладе, конструктору Item1Click в качестве параметром всегда будет передаваться null. Поскольку, public MouseClick(JTable t, JPopupMenu pm) - это конструктор и выполняется при создании объекта MouseClick, а поля userId, recordId в момент выполнения конструктора значений не имеют. P.S.: Хотя странно, мне всегда казалось, что компилятор ругается, если использовать не инициализированные ссылки на объекты... |
| Автор: Bulat 14.6.2006, 15:18 | ||
Я это уже понял. Смотри, допустим я перекину все пункты меню в основной форму, там набросаю обработку действий, а данные буду получать через getter'ы: в MouseClick пропишу getter'ы для моих переменных, а потом в Item1Click буду вызывать MouseClick и соответственно getter. Если так сделать? Добавлено @ 15:29 Попробовал, пока не получается |
| Автор: Bulat 14.6.2006, 15:52 | ||
Моя фантазия В принципе надо: выбрал в таблице строку, нажал правой кнопкой мышки, выпало меню, нажал левой кнопкой мышки на одном из пунктов, появился соответствующий JDialog. при этом там туда-сюда передавать некоторые данные. Есть у меня такой минус: я еще это не дописал, а у меня в голове крутятся мысли как еще улучшить свой проект |
| Автор: powerOn 14.6.2006, 16:19 | ||
Т.е. меню постоянное. В обработчике нажатия на пункт контекстного меню, нужно собрать все необходимые для дальнейшей обработки данные. Например кординаты выбранной ячейки в таблице, или её значение, ссылки на другие элементы. Потом эти данные используются для создания нового потока обработчика. Этот поток и будет инициализировать и показывать твой диалог, а также производить всю необходимую длительную обработку. Типичное делегирование. Т.е. Выбрали ячейку -> щелк. правой кнопкой мыши -> отобразили меню -> выбрали пункт меню, Обработка выбора пункта меню собирает всю необходимую инфу, создает новый поток-обработчик и запускает его. Поток обработчик в свою очередь уже занимется отображением необходимых диалогов и других действий... Все компоненты и всех слушателей можно создать один раз, различие в работе будет обусловленно только передаваемыми данными. Что будет создаваться каждый раз заново, так это поток-обработчик. Ну, а ему по должности велено. |
| Автор: Bulat 14.6.2006, 16:35 |
| Все, все, все доперло! |