2012-03-09 12 views
-1

Game.java는 board.java에 getLabel() 함수를 호출합니다. Game.java를 실행할 때 터미널에 "심볼 메서드 getLabel()"을 찾을 수 없습니다. 오류가 발생합니다. 나는 그것을 고칠 수 없다.메서드 호출이 작동하지 않습니다.

Game.java

import java.awt.*; 
import javax.swing.*; 
import javax.swing.JLabel; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

public class Game { 

    private board b; 
    private bishop bis1; 
    private JLabel q; 

    public static void main(String[] args) { 
     Game f = new Game(); 
     f.start(); 
    } 

    public void start() { 
     b = new board(); 
     bis1 = new bishop(); 
     bis1.setLocation(0, 0); 
     ImageIcon m = bis1.getImage(); 
     q = b.getLabel(); 

     q.addMouseListener(new Mouselist()); 
     b.squares[0][0].add(q); 
    } 

    class Mouselist implements MouseListener { 

     public void mouseClicked(MouseEvent e) { 
      //k.setIcon(null); 
      b.squares[1][1].add(new JLabel(new ImageIcon("rook.png"))); 
     } 

     // mouse entered the JLabel increment count and display it 
     public void mouseEntered(MouseEvent e) { 
      b.squares[1][1].add(new JLabel(new ImageIcon("rook.png"))); 
     } 

     public void mouseExited(MouseEvent e) { 
      b.squares[1][2].add(new JLabel(new ImageIcon("rook.png"))); 
     } 

     // mouse was presssed (cliked and released) 
     // increment counter and display it 
     public void mousePressed(MouseEvent e) { 
      b.squares[1][1].add(new JLabel(new ImageIcon("rook.png"))); 

     } 

     public void mouseReleased(MouseEvent e) { 
      b.squares[1][1].add(new JLabel(new ImageIcon("rook.png"))); 
     } 
    } 
} 

board.java 여기 가능성이 잘못 무엇

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

public class board { 

    public JFrame frame; 
    public JPanel squares[][] = new JPanel[3][3]; 
    private JLabel sqk = new JLabel(new ImageIcon("knight.png")); 

    public board() { 
     frame = new JFrame("Simplified Chess"); 
     frame.setSize(1200, 800); 
     frame.setLayout(new GridLayout(2, 3)); 

     for (int i = 0; i < 2; i++) { 
      for (int j = 0; j < 3; j++) { 
       squares[i][j] = new JPanel(); 

       if ((i + j) % 2 == 0) { 
        squares[i][j].setBackground(Color.black); 
       } else { 
        squares[i][j].setBackground(Color.white); 
       } 
       frame.add(squares[i][j]); 
      } 
     } 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    public JLabel getLabel() { 
     return sqk; 
    } 
} 

?

+6

Java 코딩 규칙에 따르면 클래스는 대문자로 시작해야하므로 '보드'대신 '보드'여야합니다. 아마도 당신의 문제에 도움이되지 않을 것이지만, 일반적인 메모로. – nwinkler

+5

board.java를 다시 컴파일 했습니까? =) – mcfinnigan

+0

거기에 'call'이라는 이름의 메서드가 없습니다. – mKorbel

답변

3

대부분의 아마 당신은 단지 getLabel() 방법을 추가 한 아직

0

board.java을 다시 컴파일하지 않은 둘 다 board.java에 대한 코드를 가져다가 Game.java 내 IDE로로드. 줄 24 (q = b.getLabel())에서 오류가 발생하지 않았습니다. (bishop.java를 제공하지 않았기 때문에 약간의 컴파일 오류가 발생했으나 문제는별로 관련이 없습니다.)

오류가 발생하는 곳은 어디입니까? 그렇다면 3 개의 실제 .java 파일을 이메일로 보내 주실 수 있습니까?

그런데 위에서 언급 한 것처럼 다시 문제가되지는 않지만 클래스 이름 (예 : 이사회 및 주교)을 대문자로 사용하는 것은 매우 표준적인 관행이므로 적극 권장합니다. 다른 Java 프로그래머가 코드를 더 쉽게 읽을 수 있습니다.

관련 문제