java中往JFrame添加Panel控件只显示一个,求解

publicclassMapGridextendsPanel{//地图格子坐标intx;inty;//格子颜色Colorcolor;publicvoidpaint(Gra... public class MapGrid extends Panel {
//地图格子坐标
int x;
int y;
//格子颜色
Color color;

public void paint(Graphics g) {

g.setColor(color);
g.fill3DRect(x, y, 20, 20, true);
}
public MapGrid(int x,int y,Color color)
{
this.x=x;
this.y=y;
this.color=color;
}

}

public class Test {
public static void main(String[] args) {

JFrame frame=new JFrame();
frame.setBounds(200, 200, 300, 300);

//MapGrid继承Panel
MapGrid g1=new MapGrid(0,0,Color.gray);
MapGrid g2=new MapGrid(20,0,Color.blue);
MapGrid g3=new MapGrid(40,0,Color.green);

frame.add(g1);
frame.add(g2);
frame.add(g3);

frame.setVisible(true);
}

}
展开
 我来答
乐正雁卉d1c01
推荐于2017-12-16 · TA获得超过103个赞
知道答主
回答量:80
采纳率:0%
帮助的人:50.3万
展开全部
因为JFrame默认的布局管理器为BorderLayout,其默认添加在BorderLayout.CENTER上,以上你的代码,你是想要同时显示3个panel,可以按照以下来设置
farme.add(BorderLayout.NORTH,g1);
frame.add(BorderLayout.CENTER,g2);
frame.add(BorderLayout.SOUTH,g3);
若这样不能达到你的效果,还可以这样
JFrame frame = new JFrame(new FlowLayout());
frame.add(g1);
frame.add(g2);
frame.add(g3);
希望对你有帮助
追问

我想画出这种效果的图,用你上面的那种做法,感觉做不了。。。

追答
我觉得你想要得到上面的这种效果,个人感觉思路有点不对
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式