2012-03-09 8 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コーディング規約では、クラスは大文字で始まると言われているので、 'board'ではなく' Board'でなければなりません。おそらく、あなたの問題については助けにならないでしょうが、一般的なメモとして。 – nwinkler

+5

board.javaを再コンパイルしましたか? =そこ) – mcfinnigan

+0

名前のような方法 'call' – mKorbel

答えて

3

は、おそらくあなただけのgetLabel()メソッドを追加して、まだ私はboard.javaとGame.javaの両方のためにあなたのコードを取り、私のIDEにそれをロードしboard.java

0

を再コンパイルしていません。 24行目(q = b.getLabel())にエラーはありませんでした。 (私はあなたがbishop.javaを提供しなかったので、いくつかのコンパイルエラーを取得しましたが、それはあなたの問題にirrellevantです。)

はあなたのエラーを取得している24行ですか?もしそうなら、3つの実際の.javaファイルを私にメールで送ってくれますか?クラス名(例えば、取締役会およびビショップ)の大文字、上述のように、再び、それは、あなたの問題とは無関係であるが、ところで

は、非常に標準的な方法であると私は非常にあなたがそうお勧めします。他のJavaプログラマーがあなたのコードを読むのが簡単になります。

関連する問題