2015-04-03 137 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风格”。

相关问题