在java

时间:2016-03-31 13:41:59

标签: java swing

我已经以网格的形式在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);

但是此代码不会在框中添加梯形图。请好好告诉我如何在盒子上添加梯形标签。

1 个答案:

答案 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