import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BackgroundPanel extends JComponent
{
public BackgroundPanel()
{
JFrame JF = new JFrame("加载背景图片 ");
Container cp = JF.getContentPane();
NewPanel p = new NewPanel();
cp.setLayout(new BorderLayout());
cp.add(p,BorderLayout.CENTER);
JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JF.setBounds(0,0,800,600);
JF.setVisible(true);
;
}
public static void main(String[] args)
{
new BackgroundPanel();
}
}
class NewPanel extends JPanel 
{
int x = 0;
int y = 0;java.net.URL imgURL = getClass().getResource("stile.gif");//此处换成你的图片路径
ImageIcon icon = new ImageIcon(imgURL);public NewPanel()
{
}
public void paintComponent(Graphics g)
{//g.drawImage(icon.getImage(),x,y,getSize().width,getSize().height,this);
while(true)
{
g.drawImage(icon.getImage(),x,y,this);
if(x > getSize().width && y > getSize().height)
{
break;

if(x > getSize().width)
{
y += getSize().height;
x = 0;
}
else
{
x += getSize().width;
}
}
}//paintComponent()}//class NewPanel

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.image.BufferedImage;
    public class BackgroundPanel extends JComponent 
    {

        
    public BackgroundPanel() 
    {
    JFrame JF = new JFrame("加载背景图片 ");
    Container cp = JF.getContentPane();
    NewPanel p = new NewPanel();
    cp.setLayout(new BorderLayout());
    cp.add(p,BorderLayout.CENTER);
    JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JF.setBounds(0,0,800,600);
    JF.setVisible(true);
    //addKeyListener(this);
    System.out.print(p.getWidth());
    System.out.print(p.x);
    }//paintComponent()public void keyReleased(KeyEvent e)
    {
    }//KeyReleased()
    public void keyTyped(KeyEvent e)
    {}
    public static void main(String[] args) 
    {
    new BackgroundPanel();}
    }
    class NewPanel extends JPanel implements KeyListener
    {
    int x = 0;
    int y = 0;
    BufferedImage bimage;public NewPanel()
    {
    this.addKeyListener(this);//添加键盘控制监听器
    //加载图片
    Image image = this.getToolkit().getImage(ClassLoader.getSystemResource("stile.gif"));
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(image,1);
    try{
    mt.waitForAll();
    }catch(Exception e){

    e.printStackTrace();
    }
    //创建缓冲区图像
    bimage = new BufferedImage(image.getWidth(this),image.getHeight(this),
    BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2D = bimage.createGraphics();
    g2D.drawImage(image,x,y,this);
    }
    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    Graphics2D g2D = (Graphics2D)g;
    g2D.drawImage(this.bimage,this.x,this.y,this);
    }//paintComponent()public void keyPressed(KeyEvent e)
    {
    int keyCode = e.getKeyCode();
    int x = 0;
    int y = 0;

    if(keyCode == KeyEvent.VK_LEFT)
    {
    this.x -= 5;
    if(this.x < 0) this.x = 0;
    repaint();
    }
    else if (keyCode == KeyEvent.VK_RIGHT)
    {
    this.x += 5;
    //if(this.x>getSize().width-this.width) this.x = getSize().width-this.width;
    repaint();
    }
    else if(keyCode ==  KeyEvent.VK_UP)
    {
    this.y -= 5;
    if(this.y < 0) this.y = 0;
    repaint();
    }
    else if(keyCode == KeyEvent.VK_DOWN)
    {
    this.y += 5;
    //if(this.y > getSize().height-this.height) this.y = getSize().height - this.height;
    repaint();
    }
    }//KeyPressed(KeyEvent e)public void keyReleased(KeyEvent e)
    {
    }//KeyReleased()
    public void keyTyped(KeyEvent e)
    {
    }
    }//class NewPanel
    我修改成这样了,但是还是控制不了,大哥,能帮帮吗?是用键盘控制的,谢谢啦