2014-02-04 2 views
0

Я сделал список изображений, как это в Java:imageIcon/загрузка изображения в рамке?

static String[] imageList1 = { "images/bgs/bg.png", "images/bgs/image1.png", 
     "images/bgs/image2.png", "images/bgs/image3.png" }; 

я использую изображение в списке изображений в качестве фона, как это:

JLabel background = new JLabel(new ImageIcon(imageList1[0])); 

Проблема в том, когда я запустить программу в целом кадр был пустым (предположительно, рама состоит только из одного изображения image и одного button), но если я скрою и затем увеличу или отрегулирую ширину или высоту рамки, он внезапно отобразит image и button.

+0

Вы не можете использовать Jlabel в качестве фонового изображения. –

+1

Вы установили 'SetVisible()' _before_ или _after_ добавление 'JLabel'? Подумайте о том, как быстрее запустить простой пример для справки. На данный момент мы можем только догадываться. –

+0

1) Чтобы получить более эффективную помощь, опубликуйте [Минимальный полный протестированный и читаемый пример] (http://stackoverflow.com/help/mcve) (MCTRE). 2) Одним из способов получения изображения (ов) для примера является горячая ссылка на изображения, видимые в [этом ответе] (http://stackoverflow.com/a/19209651/418556). –

ответ

1

Вы пробовали позвонить revalidate(); repaint();?

Это может решить вашу проблему, но то, что вы ищете, это класс JImagePanel. Это сторонняя утилита и должна сделать вашу жизнь намного проще. Get the source here.

Затем добавьте эту панель в корень JFrame и альта!

+0

Я рекомендую вызывать 'repaint()' после установки значка 'JLabel'. 'revalidate()' имеет смысл только в том случае, если вы изменяете иерархию компонентов. – Gorbles

Смежные вопросы