2013-06-05 1 views
0

보드 게임을 만들려고합니다. 내 윈도우의 왼쪽은 실제 보드 게임이고 오른쪽은 몇 개의 버튼과 타이머가 있습니다. paint 메소드를 사용하여 보드를 페인트하지만 백그라운드에서 렌더링 된 새 JPanel을 만들려고 할 때. 나는 게임의 가장자리 주변에서 검은 색을 볼 수 있기 때문에 알아.paint() 메서드 뒤에 렌더링 된 JPanel

내 JFrame을 만들고 보드 클래스를 호출하는 주요 코드입니다.

frame.setSize(864, 480); 
    frame.add(new Board()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.setResizable(false); 
    frame.setLocationRelativeTo(null); 
    frame.setCursor(frame.getToolkit().createCustomCursor(new BufferedImage(3, 3, BufferedImage.TYPE_INT_ARGB), new Point(0, 0), "null")); 

    JPanel panel = new JPanel(); 
    frame.add(panel); 
    panel.setBackground(Color.BLACK); 

이것은 게시판 이미지를 그리는 코드입니다. 이것은 내 보드 클래스에 있습니다

super.paint(g); 
    s.location = MouseInfo.getPointerInfo(); 
    s.mouse = s.location.getLocation(); 
    s.updateBlackX(s.mouse); 
    s.updateBlackY(s.mouse); 
    s.updateWhiteX(s.mouse); 
    s.updateWhiteY(s.mouse); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.drawImage(board, 0, 0, null); 
    paintArray(g2d); 
    if (turn == 1) 
     g2d.drawImage(s.getBlackStone(), s.getBlackX() - f.getX() - 15, s.getBlackY() - f.getY() - 35, null); 
    else 
     g2d.drawImage(s.getWhiteStone(), s.getWhiteX() - f.getX() - 15, s.getWhiteY() - f.getY() - 35, null); 

이것은 내 문제에 대한 자세한 설명과 함께 런타임 동안 내 게임입니다. http://imgur.com/cAIS9aR

모든 도움을 주셔서 감사합니다.

답변

2

보드 게임을 만들려고합니다. 내 윈도우의 왼쪽은 실제 보드 게임이고 오른쪽은 몇 개의 버튼과 타이머가 있습니다.

다음 두 개의 패널, 버튼의 보드 클래스에 대한 하나의 다른 만들기 다음과 같이 프레임에 추가 : 시도하지 않는됩니다

frame.add(gamePanel, BorderLayout.CENTER); 
frame.add(buttonPanel, BorderLayout.EAST); 

이해야 할 모든 사용자 정의 그림과 게임 하나의 패널에서 재생.

+0

나는 게임 보드 용 패널이 없으며, 페인트하기 위해 awt를 사용합니다. 내 보드를 내 프레임에 추가합니다. – user2457344

+0

@ camickr의 제안 된 접근법은 가치가 있습니다. 여기에 관련 예제가 나와 있습니다 [여기] (http://stackoverflow.com/a/9852739/230513). – trashgod

+0

@ user2457344 정확히 어떻게 '페인트'를 사용합니까? 네가 페인트 작업을 남용하는 것 같아. 또한, 컴포넌트가 아닌 화면을 기준으로 점을 반환하므로'MouseInfo.getPointerInfo() '를 사용하면 안됩니다. 대신'MouseListener'를 사용해야합니다. – MadProgrammer

관련 문제