JFrame中添加JLabel顺序的问题

一个棋类游戏JFrame中,首先添加一个棋子的JLabel(内容是图标ImageIcon),用setBounds设置好位置,再添加一个棋盘的大JLabel,覆盖了刚刚棋子... 一个棋类游戏JFrame中,首先添加一个棋子的JLabel(内容是图标ImageIcon),用setBounds设置好位置,再添加一个棋盘的大JLabel,覆盖了刚刚棋子的坐标,此时可以正确显示(棋子在棋盘前显示)。但是如果把两个组件add的顺序颠倒后,棋子就不显示了,这是为什么?
public ChessPanel(){
Container con = this.getContentPane();
JLabel chess = new JLabel(new ImageIcon("..."));
JLabel panel = new JLabel(new ImageIcon("..."));
chess.setBounds();
panel.setBounds();
//下面两句顺序有什么问题?
con.add(panel );
con.add(chess);

}
展开
 我来答
mikemelon2012
2012-03-09 · TA获得超过3633个赞
知道大有可为答主
回答量:938
采纳率:87%
帮助的人:393万
展开全部
这是你没有考虑到布局的原因,JFrame的默认布局是BorderLayout,每次放入的内容不加”东南西北中“参数的话就放到中心,这样每次后加的覆盖上次的。

应该用setLayout方法改变一下,对于棋盘,推荐用表格布局GridLayout
追问
貌似不是这个问题啊。。。我用的就是GridLayout,只不过叙述问题的时候觉得不相关,没有写进来
追答
没错啊,你应该把棋盘设置成背景,然后把内容窗格设置成透明,用GridLayout怎么也不会重叠到一起的吧。我试过,下面是代码,你替换一下图片:

import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JFrameTest2 {

/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame("测试");
frame.setSize(350, 340);
frame.setLocation(200, 200);

frame.setLayout(new GridLayout(2,3));

frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1
frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1
frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1
frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1
frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1
frame.add(new JLabel(new ImageIcon("test1.jpg"))); //棋子1

JPanel panel = (JPanel)frame.getContentPane();
panel.setOpaque(false);

ImageIcon image = new ImageIcon("big1.jpg"); //棋盘
JLabel back = new JLabel(image);
back.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
frame.getLayeredPane().add(back, new Integer(Integer.MIN_VALUE));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cxzucc
2012-03-08 · TA获得超过1317个赞
知道小有建树答主
回答量:1735
采纳率:79%
帮助的人:591万
展开全部
可能是panel的图片比较大吧,如果先添加chess再添加panel,panel的图片就会把chess的图片给整个覆盖啦
更多追问追答
追问
chess在panel之前添加是正确的,chess在panel之后添加就不行。你的回答正好是反了
追答
反了么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式