Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2D数组JButtons不适用于get()方法?_Java_Swing_Get_Jbutton_Swap - Fatal编程技术网

Java 2D数组JButtons不适用于get()方法?

Java 2D数组JButtons不适用于get()方法?,java,swing,get,jbutton,swap,Java,Swing,Get,Jbutton,Swap,我一直想下国际象棋,但却被困在两段式的对弈中 这是我的棋盘课 public class ChessSquare extends JButton { public int Yposition; public int Xposition; private String Type; public ChessSquare( Icon s, int y , int x , String piece ) { super(s); Yposition = y; Xpositio

我一直想下国际象棋,但却被困在两段式的对弈中

这是我的棋盘课

   public class ChessSquare extends JButton 



{ 




public int Yposition;
public int Xposition;
private String Type;
public ChessSquare( Icon s, int y , int x , String piece )

{
 super(s);

 Yposition = y;
 Xposition = x;
 Type = piece ;
}         

public int getXposition()
 {
   return this.Xposition;
 }  


    public int getYposition()
 {
   return this.Xposition;
 }  


    public String getType()
   {
      return "";
   }

 }  
然后我将其添加到ChessBoard类中,使用ChessSquare类作为2D数组

     public class ChessBoard extends JFrame implements ActionListener
  {
     String type;
     ChessSquare[][] s = new ChessSquare[8][8];
     int xPos1,xPos2,yPos1,yPos2,i,j;
     JPanel panel;


    ........


    public void actionPerformed(ActionEvent e)
  {
       Boolean flag = false ;

         if(!flag)
  {
     xPos1 = s.getYposition();
     yPos1 = s.getXposition();

     flag = true;
   }
     else
   {

    xPos2 = s.getYposition();
    yPos2 = s.getXposition();


    s[xPos1][yPos1] = s[xPos2][yPos2];
    s[xPos2][yPos2] = s[xPos1][yPos1];
    flag = false;


 }


 }

 } 
试着交换两块…但不起作用?请帮忙。。。
方法
getXposition
getYposition
是自定义
ChessSquare
类的实例方法,而不是
ChessSquare
数组。要访问这些方法,您必须引用
2D
数组中的元素,例如:

xPos1 = s[0][0].getYposition();
yPos1 = s[0][0].getXposition();

为什么要使简单的事情复杂化,不要这样做,永远不要作为答案:-),这是关于准备您之前需要的所有东西,初始化…,并且使用LayoutManager也可以返回坐标(在大多数情况下,JComponent可以在此数组中交换,但(相同)在大多数情况下没有理由这样做==错误的概念)