JPanel显示图片问题

sky_pearl sky_pearl 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用JPanel显示图片以后又用了另一个JPanel把这个图片的版块放进去,然后再把第二个JPanel放到窗口中去,却什么也显示不出。直接把图片的JPanel放进去是可以显示的...
现在怎么看都觉得是第二个JPanel出了问题,因为我在面板上添加的其他信息也没有显示出来。那个,小可实在没看出来问题出哪了,请各位帮忙看看(衷心希望这次不是白痴错误了……)代码如下:


//图片面板,这个显示是没有问题的
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

class PersonImage extends JPanel{
Image image=null;
PersonImage(int cSex){
if(cSex==1)image=new ImageIcon("ff1.jpg").getImage();
else if(cSex==2)image=new ImageIcon("ff2.jpg").getImage();
else image=new ImageIcon("ff3.jpg").getImage();

setPreferredSize(new Dimension(image.getWidth(this),image.getHeight(this)));
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}

}




//第二个面板,什么也显示不出来
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class PersonPanel extends JPanel{
PersonImage pi;
JLabel p_name,p_ip;

public void PersonPanel(){
pi=new PersonImage(3);
pi.setBounds(0, 30, 470, 260);
p_name=new JLabel("漫舞流雲");//将由某个变量显示当前用户昵称
p_name.setBounds(6, 20, 85, 21);
p_ip=new JLabel("IP:127.0.0.1");//将由某个变量显示当前socket的Ip
p_ip.setBounds(5, 520, 100, 21);
this.setLayout(null);
this.add(pi);
this.add(p_name);
this.add(p_ip);
this.setPreferredSize(new Dimension(260,550));
}

}



//窗口,用pi是可以成功显示图片的,用pers就全灰的
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.FlowLayout;

class TestFrame extends JFrame{
//PersonImage pi;
PersonPanel pers;
TestFrame(){
super("测试");
pers=new PersonPanel();
//pi=new PersonImage(3);
setLayout(new FlowLayout());
//add(pi);
this.add(pers);
this.setBounds(0,0,280,550);
this.setVisible(true);
}

public static void main(String[] args){
new TestFrame();
}
}
...全文
评论 3
收藏 已收藏
分享
返回顶部
sky_pearl
Java SE 62,620 成员 307,251 内容