|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
Получение ссылки на "родительский" обьекта18.02.2016, 16:36. Показов 2898. Ответов 14
Метки нет (Все метки)
Всем хай. Есть панель, на ней кнопка. Как получить ссылку на эту панель? Т.е. на кнопке стоит слушатель, и некоторые действия должны происходить именно в панели где стоит эта кнопка.
0
|
|
| 18.02.2016, 16:36 | |
|
Ответы с готовыми решениями:
14
В Опере родительский див перекрывает дочерние ссылки Левое многоуровневое меню (родительский пункт без ссылки) |
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
|
| 18.02.2016, 17:24 | |
|
button.getParent();
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 18.02.2016, 17:50 [ТС] | |
|
нет такого метода у меня... или может нет, потому что я пытаюсь ссылку получить в Listenere. т.e.
public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("+")){ e.getParent() ?????
0
|
|
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
||||||
| 18.02.2016, 19:26 | ||||||
|
Смотрите, я Вам ответил на поставленный вопрос. Конкретно в Вашем случае, если хотите добраться до панельки прямо из Listener'а, придется городить вот это:
Но это некрасивая реализация, работать будет. но лучше использовать интерфейс. Как у вас реализована структура графических элементов? Чему принадлежит JPanel?
0
|
||||||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 18.02.2016, 22:11 [ТС] | |
|
Структура такая.
Создается фрейм. К нему добавляется Panel(extended JPanel), в конструкторе которой добавлятся еще одна панель2 и кнопка. Панель2 состоит из JtextField, которое добавляется тоже вконструкторе панели2. При нажатии на кнопку на Panel(extended JPanel) добавляетс еще одна панель2. Так как Panel(extended JPanel) будет несколько на фрейме, то нужно чтобы слушатель кнопки создавал панель2 именно в той Panel(extended JPanel), где и находится.
0
|
|
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
|
| 18.02.2016, 23:33 | |
|
Очень плохо понял. Примерно так?
JFrame <-Panel <----JButton <----Panel2 <------JTextField <----Panel2 <------JTextField
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 19.02.2016, 00:00 [ТС] | |
|
JFrame
<-Panel <----JButton <----Panel2 <------JTextField <-Panel <----JButton <----Panel2 <------JTextField и каждый раз при нажатии Button добавляется <----Panel2 <------JTextField т.е. получается JFrame <-Panel <----JButton <----Panel2 <------JTextField <----Panel2 <------JTextField <-Panel <----JButton <----Panel2 <------JTextField
0
|
|
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
||||||
| 19.02.2016, 11:03 | ||||||
|
В таком случае смотрите. Нюансы:
1) Класс Panel назвал Panel1, чтобы не путаться с awt.Panel 2) В каждой Panel1 добавляется JPanel containerPanel, так как количство Panel2 будет неограниченно. containerPanel добавляется через JScrollPane, для прокрутки. 3) Каждой панели заданы границы (setBorder (BorderFactory....)), чтобы было понятно где какая панель.
1
|
||||||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 20.02.2016, 17:11 [ТС] | |
|
Ух ты. Спасибо за такой развернутый ответ
![]() Добавлено через 16 часов 31 минуту RedPatrick, подскажите, пожалуйста, а добавление панелей в List для чего? только для определения размера панели?
0
|
|
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
|
| 20.02.2016, 23:59 | |
|
werrt, конкретно здесь - да. Ну и в любом же случае Вам необходимо в будущем как-то обращаться к панелям2. Создали объект - создали ссылку для обращения, нужно использовать панель - вызываете panels.get(i);
1
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|||||||||||
| 21.02.2016, 02:07 [ТС] | |||||||||||
|
Согласен- красиво. Из LIst'a их вытаскивать, наверно надо будет создавать какую нить переменную count для всех панелей и назначать ее каждой панели, а потом через какой то такой цикл удалять и изменять:
Добавлено через 19 минут я просто удаляю панели по вашему совету: в МаусЛистенере
0
|
|||||||||||
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
|
| 21.02.2016, 11:27 | |
|
werrt, так вполне удобно получается, если обрабатываете именно по клику на панели.
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 24.02.2016, 19:53 [ТС] | |
|
И снова проблема.
компоновка рограммы такая JFrame <-Panel1 <-Panel2 <----JButton <----Panel3 Пытаюсь по нажатию Button получить ссылку на JFrame, чтобы потом на его Panel1 lдобавить новый элемент. По идее он вляется вторым родителем Button. Пишу в Листенере: if(e.getActionCommand().equals("Тест")){ MyButton button = (MyButton) e.getSource(); JPanel panel = (JPanel) button.getParent(); получаю ссылку на родителя кнопки, т.е. Panel2 JFrame frame= (JFrame) panel.getParent(); вроде бы это и должна быть ссылка на фрейм, но.... ... получаю ошибку javax.swing.JLayeredPane cannot be cast to JFrame Не понимаю откуда JLayeredPane? Что не так? До Добавлено через 59 минут похоже до фрейма надо было дольше идти ![]() JLayeredPane panel12= (JLayeredPane) panel1.getParent(); JRootPane panel13= (JRootPane) panel12.getParent();
0
|
|
|
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
|
|||||||||||||||||||||||||||||||||||||||||
| 25.02.2016, 10:53 | |||||||||||||||||||||||||||||||||||||||||
|
Я предлагаю Вам использовать интерфейсы. Каждый класс в отдельном файле, разберитесь, комментарии добавил
1
|
|||||||||||||||||||||||||||||||||||||||||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 29.02.2016, 18:40 [ТС] | |
|
А как теперь все это велиеолепие сохранить. Я пытался через сериализацию. Т.е. создавал например, в главном фрейме поле
List listIn. Куда помещал при нажатии кнопки новую созданую панель. Далее сериализировал этот List. И вроде успешно(не было Exeption) Но вот при десериализации постоянно ошибка: Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.List public static Object serIn() { Object list =null; try { FileInputStream inputStream = new FileInputStream("serialization.ser"); ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); list = objectInputStream.read(); inputStream.close(); objectInputStream.close(); System.out.println(list); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println("Файла еще нет, щас новый запилим"); System.exit(1); } catch (IOException e) { e.printStackTrace(); } return list; а в мейне при его старте listIn = (List) serIn(); где listIn как поле: private static List<S> list = new ArrayList<>();
0
|
|
| 29.02.2016, 18:40 | |
|
Помогаю со студенческими работами здесь
15
Получение дескриптора флеш-обьекта Получение id еще не сохраненного обьекта
Получение значения в дочерних классах через указатель на родительский класс Получение html кода выделенного обьекта в WebBrowser Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|