Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > 2D графика в JFrame


Автор: Samuil 3.5.2006, 11:06
Всем Привет!
1) Как можно в JFrame сделать BackGround image не используя метод paint() ?

2) Помещаю в JFrame Swing и awt компоненты и делаю прорисовку всего окна в методе paint(). Все Swing и awt компоненты зарисовываются как этого избежать? Но обязятельно нужно их взаимодейсвие smile  

Автор: victa 3.5.2006, 15:19
Тебе нужно переопределить метод public void paintComponent(Graphics) для контейнера,  и в нем рисовать background

Только учитывай, что если ты нарисовал картинку в контейнере, а сверху положил например панель с кнопками, и эта панель весь контейнер заняла,то рисунка ты не увидишь.


Что то вроде этого:
Код

public void paintComponent(Graphics gr) {
    super.paintComponent(gr);
    if (image != null) {
        gr.drawImage(image, 0, 0, this);
    }
}
 

Автор: Samuil 3.5.2006, 19:51
Проблемма такая: Есть большая по размерам картинка, Надо указать в конструкторе чтобы в начале она отрисовалась и постоянно оставалась видимой без перересовки в методе paint() как это сделать? Да и вообще как делают зад.фон во фреймах без метода paint()? HELP PLEASE VERY NEED! 

Автор: powerOn 3.5.2006, 20:58
Без метода paint() ничего не получится. Такова суть графической системы Java. 
JVM вызовет метод paint всякий раз, когда сочтет нужным перерисовать фрейм.  У программистов есть возможность добавлять (переопределять метод) в paint() свой код, это позволяет прорисовать на фрайме все что твоей душе угодно и при этом быть уверенным, что если какое-то другое окно проскользит поверх твоего, то система перерисует окно в первоначальное состояние. 
Так что переопределяй метод paint() и все будет впорядке.  smile  

Автор: w1nd 3.5.2006, 22:06
Переопределять лучше всё-таки paintComponent(), а еще нужно сделать прозрачной (setOpaque()) rootPane. 

Автор: Samuil 4.5.2006, 12:30
Так всетаки можно одновременно использовать паинт и свинг компоненты smile  smile  

Автор: powerOn 4.5.2006, 13:00
Цитата

Так всетаки можно одновременно использовать паинт и свинг компоненты smile  smile   


естественно можно. 

Автор: Samuil 4.5.2006, 13:13
хе - хе а как? Просто очень надо smile  

Автор: powerOn 4.5.2006, 15:11
Samuil, документации по этому вопросу не меряно (Google рулит кстати), например http://java.sun.com/products/jfc/tsc/articles/swing2d/index.html


P.S.: конкретнее вопросы задавай  smile  

Автор: Samuil 5.5.2006, 20:20
Спасибо MoonCat очень помогло smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)