import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;public class SwingDemo extends JFrame
{
P p;
public SwingDemo()
{
Container con=this.getContentPane();
p=new P();
con.add(p,BorderLayout.NORTH);
}
public static void main(String args[])
{
SwingDemo f=new SwingDemo();
f.setDefaultCloseOperation(3);
f.setSize(400,300);
f.setVisible(true);
}
class P extends JPanel
{
public void paintComponent(Graphics g)
{
Image image=Toolkit.getDefaultToolkit().getImage("image//logo.GIF");
MediaTracker m=new MediaTracker(this);
m.addImage(image,0);
try {
m.waitForID(0);
} catch (InterruptedException e){e.printStackTrace();}
int w=image.getWidth(this);
int h=image.getHeight(this);
g.drawImage(image,0,0,this);
for(int i=0;i*w<getWidth();i++)
for(int j=0;j*h<getHeight();j++)
{
g.copyArea(0,0,w,h,i*w,j*h);
}
}
}
}
大家看!con.add(p,BorderLayout.NORTH);
我用的是这种布局方式!如果要是不用布局就可以解决这个问题!
为什么呢?谁能给解释一下!
还有我应该怎么做?谢谢

解决方案 »

  1.   

    你用的布局是JFrame自带的布局,我看了你的代码你为什么不把布局设成
    con.add(p,BorderLayout.CENTER)你的程序面板中只有一个panel。
      

  2.   

    我给你试了一下,con.add(p,BorderLayout.CENTER)设成这就能解决问题。你看看边界布局
    你的north就是上面的一块。
      

  3.   

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.event.*;public class SwingDemo extends JFrame
    {
    P p;
    public SwingDemo()
    {
    Container con=this.getContentPane();
    p=new P();
    con.add(p,BorderLayout.NORTH);
    }
    public static void main(String args[])
    {
    SwingDemo f=new SwingDemo();
    f.setDefaultCloseOperation(3);
    f.setSize(400,300);
    f.setVisible(true);
    }
    class P extends JPanel

    {
    public P()
    {
    setPreferredSize(new Dimension(200,200));
    }
    public void paintComponent(Graphics g)
    {
    Image image=Toolkit.getDefaultToolkit().getImage("11.jpg");
    MediaTracker m=new MediaTracker(this);
    m.addImage(image,0);
    try {
    m.waitForID(0);
    } catch (InterruptedException e){e.printStackTrace();}
    int w=image.getWidth(this);
    int h=image.getHeight(this);
    g.drawImage(image,0,0,this);
    for(int i=0;i*w<getWidth();i++)
    for(int j=0;j*h<getHeight();j++)
    {
    g.copyArea(0,0,w,h,i*w,j*h);
    }
    }
    }
    }
    要不这样也行,你把的你的P给设一个大小
      

  4.   

    你把p设的大一点setPreferredSize(new Dimension(200,200));