2013-03-21 2 views
1

8x8 격자를 구성해야하는 이미지가 있으므로 보드의 배경입니다.JLabel 배경 이미지 ... 이상한 행동?

저는 ImageIcon과 JLabel을 사용하여이 작업을 수행 할 수 있다고 말했지만 실제로 작동하지 않습니다.

  • 구성 요소를 추가 할 수 없습니다 (조각, 또한 JLabel 임).
  • 또한 프로그램이 실행 중일 때 사각형을 클릭하면 사라집니다. 이는 배경이되어야하므로 적합하지 않습니다. 여기

코드입니다 :

 for (int i = 0; i < 8; i++) 
     { 
     for (int j = 0; j < 8; j++) 
     { 
      square=new JLabel(); 
      square.setIcon(icon); 
      chessBoard.add(square); 
     } 
     } 

전체 코드 : http://pastebin.com/YdavUmGz

내가이 배경 이미지 끔찍하게 잘못 뭔가를하고 있습니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

어떻게 이미지를로드? 이미지가 나타나지 않습니까? 하나의 IconImage를 하나의 JLabel로만 설정할 수 있기 때문에 64 (8 X 8) 이미지가 필요하면 64 JLabels가 필요합니다. 그리드 (8 X 8) 한 개의 큰 이미지 만 있으면 더 간단합니다. 그냥 생각. – John

+0

이미지가 정확히 어떻게 나타나는지 정확하게 나타납니다. 그러나 사각형을 드래그 할 수 있기 때문에 이미지가 움직이는 것처럼 느낍니다. 그러나 조각의 배경이되어야합니다. – user1902535

+1

나는'JLayeredPane'을 제거 할 것이다. 시간 동안 'GridLayout'을 사용하기 만하면됩니다. 'JLabel'에 다른 컴포넌트를 추가 할 수 있습니다. 그리드 라벨의 레이아웃을'BorderLayout'과 같이 설정해야합니다. 그런 다음 클릭하면 'JLabel'조각을 추가 할 수 있습니다. – MadProgrammer

답변

3

이와 비슷한 제품을 찾고 계십니까?

import java.awt.*; 
import javax.swing.*; 

public class ChessBoard extends JFrame { 

    private JPanel panel; 

    public ChessBoard() { 
     panel = new JPanel(); 
     panel.setLayout(new GridLayout(8, 8, 0, 0)); //Create the board 
     //Add JLabels 
     for (int i = 0; i < 64; i++) { 
      JLabel label = new JLabel(); 
      label.setIcon(
        new ImageIcon(getClass().getResource("images/face.png"))); 
      panel.add(label); 
     } 
     //Add the panel to the JFrame 
     this.add(panel); 
     this.pack(); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public static void main(String[] args) { 
     try { 
      UIManager.setLookAndFeel(
        UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new ChessBoard(); 
      } 
     }); 
    } 
} 

enter image description here