2016-03-31 8 views
3

JFrameで複数のラベル(ボックス)をグリッド形式で追加しました。今、私はこのような何かをしています。このため、グリッド内のラベルの一部の上にラベル(ラダー)を追加したい:Javaの複数ラベルにラベルを追加する

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

board' 'のレイアウトマネージャとは何ですか? – Berger

+0

nullレイアウト.... –

+0

[JLayer](http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html)を使用してください。 –

答えて

3

これを達成するには、JFrameJLayeredPaneを使用してください。

ボードをバックレイヤーに置き、ラダーをフロントレイヤーに配置するだけです。ここで

は、あなたの実際のコードに近い、たとえば次のとおりです。

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

関連する問題