2013-09-23 3 views
0

Я строю JFrame с изображением в качестве фона. Я переопределяю метод paint() для рисования этого изображения в JFrame, но когда я запускаю приложение в Eclipse, ни один из добавленных JComponents не отображается. Вот мой SSCCE:super.paint() не видно над изображением

public class foo extends JFrame{ 

    Image i = ImageIO.read(new URL("http://pittsburgh.about.com/library/graphics/regatta_balloons-640.jpg")); 

    foo(){ 
     setSize(100, 100); 
     add(new JButton("Foo")); 
     setVisible(true); 
    } 

    @Override public void paint(Graphics g){ 
     super.paint(g); 
     g.drawImage(i, 0, 0, null); 
    } 
} 

ответ

1

Не переопределяйте метод paint() JFrame !!! Это НЕ, как обычная картина сделана.

Если вы пытаетесь добавить фоновое изображение в свой фрейм, то зайдите в Background Panel для нескольких подходов.

+0

Метод JLabel работал для меня. Благодаря! – celloplayer

0

Заявления оформляются в указанном вами порядке. Если вы поместите g.drawImageпослеsuper.paint(g); он будет рисовать изображение после другого материала рисовать, т.е. над других вещами. Это похоже на всевозможные картины. То, что вы рисуете позже, будет за предыдущий розыгрыш.

+0

Проблема с размещением super.paint (г) после того, как в том, что я вижу серый фон вместо изображения я хочу нарисован. – celloplayer

+0

Вы проверили, правильно ли загружено изображение? Вложение URL-адреса http в «Файл» выглядит очень странно. Хотя это может работать случайно. – Holger

+0

Я щелкнул местоположение копии изображения, чтобы получить URL-адрес изображения, но это ва только для целей SSCCE. В моей реальной программе это находится в локальной папке, и я не был уверен, как опубликовать SSCCE с изображением без http-url. – celloplayer

0

Здесь хорошо tutorial о том, как установить фон JFrame.

JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png")); 
add(background); 
background.setLayout(new FlowLayout()); 

ИЛИ

setLayout(new BorderLayout()); 
setContentPane(new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png"))); 
Смежные вопросы