2017-04-25 4 views
0

주사위 놀이 게임을 위해 JPanel을 확장하는 보드 클래스를 만들고, 체커 용 드래그 영역을 만드는 JLayeredPane을 만들려고하지만 패널에 간단한 사각형을 인쇄 할 수 없습니다 . 이미지는 인쇄하지만 JLabel은 인쇄하지 않습니다. 여기 내 JPanel의 클래스JPanel에서 JLayeredPane의 내용을 볼 수 없음

public class BoardPanel extends JPanel{ 

private JLayeredPane lp; 

private BufferedImage imageBoard; 
private final int WIDTH = 1000; 
private final int HEIGHT = 800; 

private ArrayList<Slot> slotSet1; 
private ArrayList<Slot> slotSet2; 
private ArrayList<Slot> slotSet3; 
private ArrayList<Slot> slotSet4; 
private CheckerSet ch1; 
public Checker chc; 

public BoardPanel(){ 

    initComponents(); 

} 

private void initComponents(){ 

    lp = new JLayeredPane(); 

    setPreferredSize(new java.awt.Dimension(1500, 1000)); 

    //lp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 
    lp.setBorder(javax.swing.BorderFactory.createTitledBorder("asdadsaddadsadasdadsa")); 
    lp.setMaximumSize(new java.awt.Dimension(1124, 904)); 
    lp.setMinimumSize(new java.awt.Dimension(1124, 904)); 


    try { 
     imageBoard = ImageIO.read(getClass().getResource("/images/board.jpg")); 
    } catch (IOException e) { 
     System.out.println("file error"); 
    } 

     JLabel label = new JLabel(); 
     label.setVerticalAlignment(JLabel.TOP); 
     label.setHorizontalAlignment(JLabel.CENTER); 
     label.setOpaque(true); 
     label.setBackground(Color.BLACK); 
     label.setForeground(Color.black); 
     label.setBorder(BorderFactory.createLineBorder(Color.black)); 
     label.setBounds(0, 0, 50, 50); 

    lp.add(label,JLayeredPane.DEFAULT_LAYER); 


} 
public void paintComponent(Graphics g){ 

    //g.drawImage(imageBoard,0,0,null); 

} 

}

이다 그리고이

public static void main(String[] args){ 

    JFrame f = new JFrame(); 

    //GamePanel gp = new GamePanel(); 
    BoardPanel gp = new BoardPanel(); 

    f.add(gp); 

    //f.getContentPane().add(gamePanel); 
    f.setSize(new Dimension(1500, 1000)); 
    f.setVisible(true); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

어떻게 내가 그것을 주요 해결할 수있다? 고마워요

+0

'JLayeredPane'은 아무 것도 추가되지 않습니다. – Berger

+0

방금 ​​라인 추가 (lp)를 추가하고 뭔가가있어. 나는 lp를위한 레이아웃을 설정할 필요가 있다고 생각한다. 감사합니다 –

답변

0

예를 들어, GridLayout과 같은 JLayeredPane에 레이아웃을 추가해야합니다. 시도해보십시오

GridLayout gl = new GridLayout(20, 21); 
lp.setLayout(gl); 

lp을 초기화 한 후 그런 다음 인스턴스 LP를 들어, GridLayout과에 필요한 모든 구성 요소를 추가 할 수 있습니다

gl.add(lp) 

레이아웃은 상황이 표시되는 방법을 관리합니다; 이 경우 GridLayout에서 그리드를 채 웁니다. 첫 번째 행 (20 개가 존재합니다), 두 번째 행 등 (실제로 20 행이 필요하지는 않습니다. 예제 코드)

+0

당신의 대답을 시도했지만 여전히 아무것도 나타나지 않습니다. 편집 : 방금 initComponents() 메서드에 추가 (lp) 추가 및 일부 결과 덕분에 –

+0

예 내 응답에 theGridLayout "lp"명시 적으로 추가하는 것을 잊었다 그에 따라 내 응답을 편집합니다 – Yato

+0

나는 그것을 기쁘게 생각합니다 도움이 :) 당신은 그때 다른 사람이 당신을 도왔다는 것을 볼 수 있도록 올바른 것으로 표시해 주시겠습니까? – Yato

관련 문제