1 / 1 / 1
Регистрация: 26.04.2012
Сообщений: 10
|
|||||||||||
1 | |||||||||||
Image не отрисовывается с первого раза в JPanel16.03.2013, 02:01. Показов 3217. Ответов 3
Метки нет (Все метки)
Здравствуйте.
Учу Java и возникли трудности с GUI. То что я пытаюсь сделать, это отрисовать пару картинок на JPanel. По задумке, 1-ая картинка отрисовывается сразу после инициализации всех компонентов, а вторая после щелчка. И потом как по принципу Toogle, с каждым щелчком отрисовывается то 1-ая, то 2-ая, снова 1-ая.... и т.д. Но проблемма заключается в том, что картинка 1-ая не отрисовыается сразу(надо потянуть JFrame и сразу появляется). Со второй картинкой такая же проблемма. Но что самое интересное это то, что баг действует только 2 первых щелчка, а потом как по маслу... всё работает... (( Класс фрейма
Допустим есть Панель 400х400. Рисую картинку1 50х50 в (0,0). Потом хочу нарисовать картинку2 50х50 в (150,150). Как сделать так чтобы при отрисовке второй катринки, первая не стиралась? Чем пользоваться? Исходник PS. https://dl.dropbox.com/u/43883530/Test.rar
0
|
16.03.2013, 02:01 | |
Ответы с готовыми решениями:
3
Сохранить то, что отображается на JPanel, в Image (и восстановить обратно) Image помещенный в Scrollbox не полностью отрисовывается Не отрисовывается таблица для первого элемента из массива Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху |
16.03.2013, 11:00 | 2 | |||||
первая ошибка - вы делаете сначала фрейм видимым, а после на него что то ложите. Из-за этого первая проблема - надо потянуть JFrame и сразу появляется
вторая ошибка - класс NewJPanel - строка 41-42 - поменяйте местами, сначала увеличьте переменную, а после перерисуйте. P.S.
можно обойтись без переменно x
Добавлено через 1 минуту рисовать сразу обе
0
|
1 / 1 / 1
Регистрация: 26.04.2012
Сообщений: 10
|
||||||||||||||||||||||||||||||||||||
18.03.2013, 00:34 [ТС] | 3 | |||||||||||||||||||||||||||||||||||
Переделал - поставил setVisible(true) в main(), уже лучше - не приходиться растягивать Frame, чтобы хотя бы увидеть Background панели. И флаг поставил...
Кликните здесь для просмотра всего текста
Но проблемма остаётся, 1ая каритнка по идее должна отрисовываться сразу её не видно. Щелчок - отрисовка 2ой картинки (её не происходит, точнее происходит но надо "потянуть"), щёлчок и вот появляется первая картинка без "плясок"... Так что проблемма остаётся... Добавлено через 5 часов 9 минут И всё-таки метод "научного тыка" великая вещь... Ну и API Java естественно Решение проблеммы крылось в добавлении метода checkImage() в конструктор панели. Так как в API нашёл что некоторым прогам надо подготовить картинку для показа. Source: "An application must use the prepareImage method to force the loading of an image." Что ж, тогда будем готовить... Сказано - сделано. Кликните здесь для просмотра всего текста
И кстате заметьте, что для отрисовки использовал Graphics g, а не Graphics2D g2d. В чём собственно разница, так как результат идентичный? PS.Но решение одной проблеммы, породило другую, на горе моего пытливого разума... Создал вторую Панельку с FlowLayout'ом и пытаюсь по нажатию мыши добавлять панельки меньшего размера с картинкой. Та же проблемма что и в начале приходится "тянуть" JFrame после добавления каждой панельки, а то не видно добавляются они или нет... Помучаюсь ещё немного и если не получиться то выложу код с мольбой о помощи... Хотя если получится, то тоже выложу Добавлено через 20 часов 14 минут Ничего не получается... Куда только я не пытался приткнуть метод checkImage(), не отображаются картинки пока не "потянешь". Кто знает в чём проблема? Фрейм : Кликните здесь для просмотра всего текста
Панель : Кликните здесь для просмотра всего текста
Добавлено через 5 часов 39 минут Проблема решена. Всё заключалось в том, что после mouseClicked() надо было не repaint(), а updateUI().
Кликните здесь для просмотра всего текста
А на счёт самой первой проблемы с NewJPanel, так там вообще можно поступить вот так : Кликните здесь для просмотра всего текста
Если у кого есть другие варианты реализации, то пожалуйста выкладывайте мне будет очень интересно. А так же буду рад критике...
0
|
tao1x
|
|
18.03.2013, 23:30 | 4 |
|
18.03.2013, 23:30 | |
18.03.2013, 23:30 | |
Помогаю со студенческими работами здесь
4
Как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel Удаление JPanel кнопкой на этом же JPanel Не запускается с первого раза с первого раза не включаеться Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |