下面的程序是创建一个JTabbedPane用来显示各种边框
后来我在每个JPanel里画了一张图,问题就出来了,大家可以运行一下看看@SuppressWarnings("serial")
public class JTabbedDemo extends JFrame { public JTabbedDemo(){
JTabbedPane tab = new JTabbedPane();
tab.addTab("线形", new BorderPanel(BorderFactory.createLineBorder(Color.BLUE, 5)));

tab.addTab("圆角", new BorderPanel(new LineBorder(Color.GRAY,5,true)));

tab.addTab("三维效应", new BorderPanel(BorderFactory.createEtchedBorder(EtchedBorder.RAISED)));

tab.addTab("斜教", new BorderPanel(BorderFactory.createRaisedBevelBorder()));

tab.addTab("软斜角", new BorderPanel(new SoftBevelBorder(SoftBevelBorder.LOWERED)));

tab.addTab("组合", new BorderPanel(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(15, 15, 15, 15), new LineBorder(Color.gray,2,true))));

add(tab);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args){
new JTabbedDemo();
}
}
@SuppressWarnings("serial")
class BorderPanel extends JPanel {
private Image img;
    private Insets inset;
    private int w;
    private int h;
public BorderPanel(Border b){
inset = getInsets();
w = 600 + inset.left + inset.right;
h = 800 + inset.top + inset.bottom;
setPreferredSize(new Dimension(w,h));
setBorder(b);
img = Toolkit.getDefaultToolkit().createImage(System.getProperty("user.dir") + "/img/1.jpg");
}

public void paint(Graphics g){
super.paint(g);
g.drawImage(img, inset.left, inset.top, w - inset.right, h - inset.bottom, null);
}
}

解决方案 »

  1.   

    我这里运行没问题。边框 是不一样的呀不过 
            super.paint(g);
            g.drawImage(img, inset.left, inset.top, w - inset.right, h - inset.bottom, null);这2句是不是应该换下。。要不下面那句 没有作用了吧
      

  2.   

    我不是指边框的问题
    我这里运行的话,看到那图,可是选其他页的时候,那图又不见了,
    然后再选前面的页,其他页的图又可见了,而且边框不见了super.paint(g);放在下面那就更看不到那图了好吧
      

  3.   

    才明白lz的意思 
    可以 在BorderPanel 里面内嵌一个jpanel 专门用来显示图片
      

  4.   

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Insets;
    import java.awt.Toolkit;import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.border.Border;
    import javax.swing.border.EtchedBorder;
    import javax.swing.border.LineBorder;
    import javax.swing.border.SoftBevelBorder;public class JTabbedDemo extends JFrame {
    public JTabbedDemo() {
    JTabbedPane tab = new JTabbedPane();
    tab.addTab("线形", new BorderPanel(BorderFactory.createLineBorder(
    Color.BLUE, 5)));
    tab.addTab("圆角", new BorderPanel(new LineBorder(Color.GRAY, 5, true)));
    tab.addTab("三维效应", new BorderPanel(BorderFactory
    .createEtchedBorder(EtchedBorder.RAISED)));
    tab.addTab("斜教", new BorderPanel(BorderFactory
    .createRaisedBevelBorder()));
    tab.addTab("软斜角", new BorderPanel(new SoftBevelBorder(
    SoftBevelBorder.LOWERED)));
    tab.addTab("组合", new BorderPanel(BorderFactory.createCompoundBorder(
    BorderFactory.createEmptyBorder(15, 15, 15, 15),
    new LineBorder(Color.gray, 2, true))));
    add(tab);
    pack();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    } public static void main(String[] args) {
    new JTabbedDemo();
    }
    }@SuppressWarnings("serial")
    class BorderPanel extends JPanel {
    private Image img;
    private Insets inset;
    private int w;
    private int h; public BorderPanel(Border b) {
    inset = getInsets();
    w = 600 + inset.left + inset.right;
    h = 800 + inset.top + inset.bottom;
    setPreferredSize(new Dimension(w, h));
    setBorder(b); img = Toolkit.getDefaultToolkit().createImage(
    System.getProperty("user.dir") + "/img/1.jpg");
    System.out.println(inset.left + " : " + inset.right);

    } @Override
    public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(img, 5, 5, w - inset.right, h
    - inset.bottom, this);
    }
    }
      

  5.   


            g.drawImage(img, 5, 5, w - inset.right, h - inset.bottom, this);
        
    只改了这一句,我感觉你你覆写的paint方法是在背景画图吧.所以边框显示不出来,至于没有显示是因为
    g.drawImage的最后一个参数你设为null的原因.