2015-04-03 184 views
0

我想建立一個國際象棋板,但我不斷收到一個錯誤,我似乎無法修復。java錯誤,無法找到符號

我試圖找到它可能是什麼,但我只是迷路了。

我的代碼:

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


public class chess extends JFrame { 
int column_want, column_curr, column_diff; 
int row_want, row_curr, row_diff; 

    public static void main(String[] args) { 
     System.out.println("Welcome to java"); 
     board frame = new boardLayout(); 
     frame.setSize(500, 500); 
     frame.setTitle("chess Board"); 
     frame.setLocationRelativeTo(null); //center of frame 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
public void boardLayout() { 
    JPanel board = new JPanel(new GridLayout(6,5,1,1)); // gridLayout (row, column, hgap, vgap) 
    add(board, BorderLayout.NORTH); 
} 


} 

它聲稱是第12行,但我不知道爲什麼有可能是一個錯誤在那裏。

線12:

board frame = new boardLayout(); 
+0

'new'用於對象構造 - 不用於調用函數(特別是用'void'返回類型..) – rzysia 2015-04-03 08:53:54

回答

2

您聲明型board,這既不是在進口,也不在該文件。然後,您嘗試創建一個類boardLayout的實例,該類的類型是未知的。

public void boardLayout()是一個方法聲明,它不會作爲構造函數工作,除非它具有與它所屬的類相同的名稱,並且您將刪除返回類型void。像public chess()

構造函數的返回類型被聲明爲已知,它返回它實例化的對象。因此new chess()將返回chess類型的新對象。

+0

我試圖實現您的建議,但我不能理解它們。我從'public void boardLayout'中刪除了'void',我嘗試將構造函數重命名爲'chess',但是我仍然在同一行發現相同的錯誤。 我移動了'JPanel board = new JPanel(new GridLayout(6,5,1,1));'直到變量聲明塊,但它只改變了錯誤所在的行。 @EddyG – Ereun1939 2015-04-03 18:20:31

+0

構造函數中的'new JPanel()'沒有什麼錯。你修改了類型是否正確,比如'chess frame = new chess()'? – arataj 2015-04-04 20:24:15

0

你在混合語法元素。創建新對象時,只需使用new關鍵字。在調用方法時,不需要使用「新」。

命名提示:方法名稱應該包含一個動詞,所以createBoard會更「java風格」。