class JiePanel extends JPanel {
LittleJie littleJie = null;
public JiePanel() {
this.setLayout(new FlowLayout(FlowLayout.LEFT));
} public void template() throws Exception {

littleJie = new LittleJie(“101”,“你好”);
littleJie.addType()
this.add(littleJie);
} }}class LittleJie extends JPanel { ImageIcon img = new ImageIcon("jie.jpg"); public LittleJie() {
this.setSize(77,100);
this.setLayout(new GridLayout(3,1)); }
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(img.getImage(), 0, 0,this);
}
public void addType(String id, String type) {
JLabel idJLabel = new JLabel(id);
this.add(idJLabel);
JLabel typeJLabel = new JLabel(type);
this.add(typeJLabel);
}
}我想在一个大的 JiePanel 里面画加一个小的LittleJie  ,LittleJie上面是一个图片img, 下面是两行字idJLabel和typeJLabel但是结果是显示那个小图片,却没有显示字,求大虾们帮助啊

解决方案 »

  1.   

    如果你想自己绘制组件,组件边框,子组件,那就重写 paint(Graphics g)方法。否则重写 paintComponent(Graphics g).
      

  2.   

    两个标签肯定是可以显示出来的,图片没显示出来可能有以下几个原因
    1.你的图片路径问题,没有找到
    2.你写的程序调用有问题,this.setSize(77,100);本身给的显示大小也太小了,随便一个小头像就能遮住文字我下面给你的例子是一个能显示的,但是图片会遮盖到一部分文字,基本上你的重写JPanel的代码逻辑是正确的
    package csdn.p6;import javax.swing.*;
    import java.awt.*;class JiePanel extends JPanel {
        LittleJie littleJie = null;
        
        public JiePanel() {
            this.setLayout(new FlowLayout(FlowLayout.LEFT));
        }    public void template() throws Exception {        littleJie = new LittleJie();
            littleJie.addType("101","你好");
            this.add(littleJie);
            this.validate();
        }    public static void main(String[] args)throws Exception{
            JFrame frame=new JFrame("demo");
            Container c=frame.getContentPane();
            JiePanel jp=new JiePanel();
            jp.template();
            c.add(jp);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.pack();
            frame.setVisible(true);
            
        }
    }class LittleJie extends JPanel {    ImageIcon img = new ImageIcon("resources/images/thu.jpg");//改成小一些的图片地址    public LittleJie() {
            this.setSize(700,800);
            this.setLayout(new GridLayout(3,1));    }
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.drawImage(img.getImage(), 0, 0,this);
            System.out.println("--------");
        }
        public void addType(String id, String type) {
            JLabel idJLabel = new JLabel(id);
            this.add(idJLabel);
            JLabel typeJLabel = new JLabel(type);
            this.add(typeJLabel);
            this.add(new JButton("test",img));
        }
    }
      

  3.   

    import javax.swing.*;
    import java.awt.*;public class JiePanel extends JPanel {
        LittleJie littleJie = null;
        public JiePanel() {
            super(new FlowLayout(FlowLayout.LEFT));
        }    public void template() {
            littleJie = new LittleJie();
            littleJie.addType("101","你好");
            add(littleJie);
        }    public static void main(String[] args) {
            java.awt.EventQueue.invokeLater(new Runnable(){
                    @Override public void run(){
                        JFrame frame = new JFrame("demo");
                        Container c = frame.getContentPane();
                        JiePanel jp = new JiePanel();
                        jp.template();
                        c.add(jp);
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.setLocationRelativeTo(null);
                        frame.pack();
                        frame.setVisible(true);
                    }
                });
        }
        class LittleJie extends JPanel {
            ImageIcon img = new ImageIcon("thu.jpg");
            public LittleJie(){
                super(new GridLayout(3,1));
                setPreferredSize(new Dimension(img.getIconWidth(),img.getIconHeight()));
            }        @Override public void paintComponent(Graphics g){
                super.paintComponent(g);
                g.drawImage(img.getImage(), 0, 0,this);
            }        public void addType(String id, String type) {
                JLabel idJLabel = new JLabel(id);
                add(idJLabel);
                JLabel typeJLabel = new JLabel(type);
                add(typeJLabel);
                add(new JButton("Hi"));
            }
        }
    }
      

  4.   

    图片显示出来了,但是下面的两个Label没有显示来啊,这是怎么个情况