17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
1 | |
JPanel.removeAll зависает23.06.2013, 16:01. Показов 1952. Ответов 18
Метки нет (Все метки)
на панель добавлено 10000 кнопок (ну, вот так вот надо ), в процессе работы программы вызываю panel.removeAll(), и программа виснет. В чем может быть подвох?
0
|
23.06.2013, 16:01 | |
Ответы с готовыми решениями:
18
Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху Как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel Удаление JPanel кнопкой на этом же JPanel Замена JPanel на JPanel в JFrame |
Севак
|
23.06.2013, 21:41
#2
|
Не по теме: Предположу, что вы пишете какую-то игру с игровым полем 100*100 и хотите очистить это самое поле. Если да, то можно и нужно использовать не кнопки, а что-то другое, смотря какая у вас задача
1
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
24.06.2013, 09:42 [ТС] | 4 |
Именно так, но для 1000 кнопок, или меньше, команда таки отрабатывает.
Добавлено через 1 минуту А что можно использовать? В любом случае это должен быть элемент на который можно повесить ActionListener.
0
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
24.06.2013, 10:57 | 5 |
Не надо. Это классический пример неправильного проектирования. Опишите, что Вы делаете, вернее, какую задачу решаете.
1
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
24.06.2013, 14:58 [ТС] | 6 |
В базе данных лежат данные о пациентах, я должен выбрать данные о всех пациентах и вывести на панель, в столбик. далее по нажатию на какого-то пациента, должна вывестись на соседнюю панель информация о результатах его посещения.
0
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
24.06.2013, 15:25 [ТС] | 8 |
теоретически да, можно. Есть 2 момента:
1. Когда я думал как это вообще сделать, то увидел, что ActionListnera для ячейки нету, а реализовать это дело с помощью addMouseListener я просто не догадался. 2. И это главное. Заказчик сказал, все должно быть наглядно. А я не уверен, что для ячейки таблицы можно переопределить ее отрисовку. Обидно, если честно. Это моя первая более-менее серьезная программа. До этого весь опыт - лабораторные из курса универа. Более того, даже спросить не у кого, т.к. не в компании работаю и руководителей у меня нету.
0
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
24.06.2013, 15:32 | 9 |
Сообщение было отмечено как решение
Решение
Слева JList с собственным ListCellRenderer-ом, который отрисовывает каждый элемент как Вам надо. По событию itemStateChanged с ItemState.SELECTED справа показывается вся информация.
Добавлено через 2 минуты Не уверены? Спросите! Всё можно. Добавлено через 4 минуты Зря обижаетесь. Программистом никто не рождается. И товарищ это сказал не из разряда позлорадствовать, а потому, что это вызывает мысли "у меня еще не все так плохо". Многим свойственно переживать по поводу своего уровня, а понимание, что бывает и ниже, очень помогает успокоиться. Ничего личного, к Вам это не относится. Не по теме: Вот мне в свое время было сложнее - тогда, когда Java изучал я, не было ни форумов, ни специалистов, ни литературы. Ничего кроме API, который надо было печатать.
4
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
24.06.2013, 15:36 [ТС] | 10 |
Спасибо, попробую.
0
|
любитель покушать
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
|
|
24.06.2013, 16:01 | 12 |
Не по теме: уж лучше тратить время на java, чем играть в linage, сам на wow угробил год жизни, щас жалею
0
|
24.06.2013, 16:04 | 13 |
Почему вы решили что это трата? вы тренируете ум, узнаете новое, даже если позже не пригодится это уж точно не тратить
вот линейки и вообще игрушки мморпг, вконтактики, однокласы - это именно трата времени и отупление себя
0
|
AckiyBolt
|
24.06.2013, 16:13
#14
|
0
|
любитель покушать
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
|
|
24.06.2013, 16:22 | 15 |
Не по теме: я просто процитировал его, так то да, это не трата, я с вами согласен
0
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||||||
24.06.2013, 16:23 | 16 | |||||
Ну, набросал модельный примерчик.
1
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
25.06.2013, 23:31 [ТС] | 17 |
прочитал Ваш пост:
Более-менее прояснил для себя этот вариант. Но осталась пара вопросов: 1. Если я правильно понял у CellRenderera должен быть метод painComponent(), через который я и буду рисовать свою "наглядность"? Собственно, я так понимаю, он не будет даже отличаться от моего painComponenta кнопки? 2. Если CellRenderer будет наследовать JLable, то чем это будет отличаться от того, что я например напихаю на панель просто вместо кнопок JLable? Может это и глупый вопрос, но я действительно не вкуриваю. Добавлено через 4 минуты а и еще 3. Вопрос из разряда "Для общего развития", Вы в статье перед конструктором Renderera ставили модификатор доступа public. Зачем? Просто хороший тон?
0
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
26.06.2013, 11:39 | 18 |
1. Нет. Там же был пример. Никакого paintComponent не надо реализовывать. Кроме того, я в этой же теме привел renderer, который отрисовывает панельку с информацией о пациенте.
2. Для того, чтобы разместить 1000 компонент на панели, надо расчитать предпочтительный размер каждой из них, потом применить раскладку, т.е. расчитать реальный размер каждой из них, в том числе и невидимых. Для того, чтобы отрисовать 1000 элементов, требуется только отрисовать те, которые находятся в области видимости. А их штук 5-10. 3. А как Вы создадите такой класс в другом пакете без public-конструктора? Вы, судя по всему, не до конца понимаете, как работает renderer. Для того, чтобы отрисовать ячейку, делается следующее. 1. Вычисляется размер ячейки 2. renderer-у выставляется требуемый размер 3. Графический контекст Вашей компоненты копируется, у скопированного меняются координаты нулевой точки так, чтобы они были ровно в левом верхнем углу отрисовываемой ячейки 4. Вызывается метод paint (а не paintComponent!) renderer-а, в который передается настроенный графический контекст. 5. renderer отрисовывает себя (включая все свои дочерние элементы и рамки, что продемонстрировано в примере в этой теме) на указанном графическом контексте, т.е., фактически, в том месте, где находится ячейка. Таким образом, вместо манипуляции с 1000 дочерними компонентами Вы их только отрисовываете. Причем отрисовка оптимизирована, потому невидимые элементы списка/таблицы/выпадающего списка/дерева/черта в ступе Вы не отрисовываете.
1
|
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
|
|
27.06.2013, 20:18 [ТС] | 19 |
Я прошу прощения, я просто не увидел, что вторая страница темы началась. Поэтому не видел Ваш пример здесь. Спасибо, теперь все понятно, думаю, когда напишу сам, разберусь до конца.
0
|
27.06.2013, 20:18 | |
27.06.2013, 20:18 | |
Помогаю со студенческими работами здесь
19
JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Где ошибка? JPanel JPanel Рисование на JPanel Массив из JPanel Не добавляется JPanel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |