2015-09-09 2 views
2

Это очень простая программа, и я пробовал свои силы, но JPanel не придумал фоновое изображение. Мне просто нужно простое фоновое изображение на моей панели.JPanel не показывает фоновое изображение

Вот мой код:

import javax.swing.*; 
import java.awt.image.BufferedImage; 
import javax.imageio.ImageIO; 
import java.io.*; 
import java.awt.Graphics; 

class PanelEx extends JPanel 
{ 
    BufferedImage img; 

    PanelEx() 
    { 
     try 
     { 
      img = ImageIO.read(new File("C:/Users/Pictures/s_4261.jpg")); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
    public void printComponent(Graphics g) 
    { 
     g.drawImage(img,0,0,null); 
    } 
} 

class JPanelEx2 extends JFrame 
{ 
    PanelEx pe; 

    public static void main(String args[]) 
    { 
     new JPanelEx2(); 
    } 

    JPanelEx2() 
    { 
     pe = new PanelEx(); 

     add(pe); 
     setTitle("JPanel Title"); 
     setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     setSize(320,240); 
     setVisible(true); 
    } 
} 

Заранее спасибо

+0

приложений ресурсы станут встроенными ресурсами к моменту развертывания, поэтому разумно начать обращаться к ним, как если бы они были, прямо сейчас. К [тегу: embedded-resource] должен быть доступен URL, а не файл. См. [Info. страница для встроенного ресурса] (http://stackoverflow.com/tags/embedded-resource/info) для того, как формировать URL-адрес. –

ответ

5

Заменить

public void printComponent(Graphics g) { 

с

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
+0

Это работает! Спасибо, любое предложение, как сделать его эластичным вместе с размером рамки? –

+0

@ ZakiMohammed Попробуйте следующее: 'g.drawImage (img, 0, 0, getWidth(), getHeight(), this);' –

+0

Прохладный! Спасибо @LuxxMiner –

1

Не используйте JPanel. Просто используйте JLabel с иконкой, тогда вам не нужен специальный код.

См Фоновой панели для получения дополнительной информации, а также решение, которое будет окрасить изображение на JPanel с 3-х различными вариантами окраски:

  1. масштабируется
  2. плиточного
  3. фактического
Смежные вопросы