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


Автор: freshAngel 26.10.2009, 22:20
Привет.
Хочу сделать JPanel с фоновой картинкой, делаю так:

Код

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/bg.jpg"));
   
@Override
 public void paintComponent(Graphics g) {
        super.paintComponent(g); 
        g.drawImage(image, 0,0,this.getWidth(),500,this);
    }

Картинка прорисовывается, но только не в полную ширину и высоту.
Такое ощущение, что картинка фона  обрезана...
setSize() для панели с картинкой не помогает.

Автор: mgarin 27.10.2009, 02:59
Код
ToolkitImage image = ( ToolkitImage ) Toolkit.getDefaultToolkit ().getImage (getClass().getResource("images/bg.jpg"));


И используй:

Код
g.drawImage ( image, 0, 0, image.getWidth (), image.getHeight (), null );


или (нарисует изображение с его исходным размером):

Код
g.drawImage ( image, 0, 0, null );

Автор: freshAngel 27.10.2009, 19:54
Неа, не то.
Рисует так - же мелко и не на всю длину JPanel

Пробовал еще так:
Код

ImageIcon image = new ImageIcon(getClass().getResource("images/bg.jpg"));
@Override
 public void paintComponent(Graphics g) {
        super.paintComponent(g);
        image.paintIcon(this, g, 0, 0);
        //image.paintIcon(this, g, image.getIconWidth(), image.getIconHeight()); // Так тоже не работает :(
    }


Так - же рисуется не на всю панель  smile 

Автор: mgarin 28.10.2009, 05:09
Вы в методе отрисовки отдаете изображению начальную координату и длину и высоту
для его расположения.
Положите туда длину и высоту вашей панели (если метод paintComponent содержится в вашей панели то просто getWidth() / getHeight())
и будет вам картинка растянутая ровно на размер панели.

Только учтите что при изменении размера панели она также будет сжиматься-растягиваться-плющиться и т.п.
Если таким образом ей размер задавать конечно

Или уточните что именно вам нужно?
В 1ый раз я так понял что вам нужен был исходный размер изображения

Автор: freshAngel 4.11.2009, 21:42
Цитата(mgarin @ 28.10.2009,  05:09)
Вы в методе отрисовки отдаете изображению начальную координату и длину и высоту
для его расположения.
Положите туда длину и высоту вашей панели (если метод paintComponent содержится в вашей панели то просто getWidth() / getHeight())
и будет вам картинка растянутая ровно на размер панели.

Только учтите что при изменении размера панели она также будет сжиматься-растягиваться-плющиться и т.п.
Если таким образом ей размер задавать конечно

Или уточните что именно вам нужно?
В 1ый раз я так понял что вам нужен был исходный размер изображения

Спасибо.
И ведь работает!

Автор: leskar 14.11.2009, 21:00
Можете еще MediaTracker прикрутить, если еще не сделали.

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