我已经以网格的形式在JFrame上添加了多个标签( box )。现在我想在网格中的一些标签上添加一个标签( ladder ),为此我做的是这样的:
for(int i=0, x=0; i<10; i++,x+=50) {
for(int j=0, y=0; j<10; j++,y+=50) {
box[i][j] = new JLabel(j);
box[i][j].setOpaque(true);
box[i][j].setBackground(Color.BLACK);
box[i][j].setBounds(x, y, 50,50);
board.add(box[i][j]);
}
}
ladder.setBounds(0, 0, 50, 200);
ladder.setOpaque(true);
board.add(ladder);
但是此代码不会在框中添加梯形图。请好好告诉我如何在盒子上添加梯形标签。
答案 0 :(得分:3)
您可以使用JFrame
中的JLayeredPane来实现这一目标。
只需将电路板放在背层上,然后将梯子放在前层上。
这是一个示例,靠近您的实际代码:
JFrame frame = new JFrame();
JPanel board = new JPanel();
board.setLayout(null);
board.setBounds(0, 0, 500, 500);
for (int i = 0, x = 0; i < 10; i++, x += 50) {
for (int j = 0, y = 0; j < 10; j++, y += 50) {
JLabel lab = new JLabel("" + j);
lab.setOpaque(true);
lab.setBackground(Color.BLACK);
lab.setBounds(x, y, 50, 50);
board.add(lab);
}
}
JLabel ladder = new JLabel();
ladder.setBackground(Color.RED);
ladder.setBounds(0, 0, 50, 200);
ladder.setOpaque(true);
JLayeredPane pane = frame.getLayeredPane();
pane.add(ladder, new Integer(2)); // front
pane.add(board, new Integer(1)); // back
frame.setVisible(true);
此处提供更多信息:How to Use Layered Panes