gpt4 book ai didi

java - 尝试创建一个充满 JButton 的框架,但我的 JButton 无法加载

转载 作者:行者123 更新时间:2023-12-02 07:10:45 25 4
gpt4 key购买 nike

我正在为一个项目制作一个国际象棋游戏,我想做的第一件事就是创建一个框架,然后用 64 个 JButton(组织为 8x8)填充它,每个 JButton 都将充当棋盘上的方 block 。我对 Java 还很陌生,但我仍然认为我不应该收到我收到的错误,它不是不久前发生的,但这就是说,当框架之前加载时,没有任何 JButton做到了。

在使用 3D 数组向 JButton 添加坐标时,我似乎遇到了问题,我不断收到错误“对于 ChessBoard 类型,方法 add(ChessSquare) 未定义”,除此之外,Eclipse 还不断出现错误为我的错误提供帮助,但我认为接受这些错误可能会让事情变得更糟。

另一个问题是当我尝试保存 ChessSquare 中 3D 数组中的正方形坐标时。

我目前有 2 个类,ChessBoard 和 ChessSquare,我正在尝试让 ChessBoard 使用 ChessSquare 来制作棋子。

抱歉,如果我不太清楚,我太累了。

预先感谢您的帮助。

这是我的代码:

董事会:

import java.awt.GridLayout;
import java.io.IOException;
import javax.swing.JFrame;
import Logic.ChessSquare;


public class ChessBoard {

//chess board constructor
public ChessBoard() throws IOException {

//create grid and grid dimensions
GridLayout grid = new GridLayout(8,8);

//create frame and set specifications of frame
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(458, 458);
frame.setTitle("I'm starting to prefer C");

//initialise 3D array
ChessSquare[][] square = new ChessSquare[8][8];

//create 64 instances of ChessSquare and assign each square as an element in the 3D array
for (int i = 0; i < 8; i++){
for(int l = 0; l < 8; l++){
square[i][l] = new ChessSquare();
this.squarePos(square[i][l]); //this is where my main gripe is
}
}



}

public static void main(String[] args) throws IOException{
new ChessBoard();
}

}

正方形:

package Logic;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;

//chess square class, 1 instance of which for each square in the grid
public class ChessSquare extends JButton {

/**
*
*/
private static final long serialVersionUID = 1L;
//instance variables for position and piece
public int squarePos;
public String selectedPiece;

//accessor method for position
public void squarePos(){
int squarePos = ChessBoard.square;
}


//constructor for chess squares
public ChessSquare() throws IOException {
BufferedImage buttonIcon = ImageIO.read(new File("E:\\Eclipse\\ChessF\\src\\Images\\EmptySquare.jpg"));
JButton button = new JButton(new ImageIcon(buttonIcon));
}
}

最佳答案

另一个问题是当我尝试保存 ChessSquare 中 3D 数组中的正方形坐标

xy作为ChessSquare的属性,并在ChessSquare的构造函数中接收值:

public class ChessSquare extends JButton {
private int x, y;

/**
*
*/
private static final long serialVersionUID = 1L;
//instance variables for position and piece
public int squarePos;
public String selectedPiece;

public ChessSquare(int x, int y){
this.x = x;
this.y = y;
}
...

要初始化方 block 并渲染它们,请修改 ChessBoard 构造函数中的循环。您需要将新创建的 ChessSquare 添加到框架中。

    for (int i = 0; i < 8; i++){
for(int l = 0; l < 8; l++){
ChessSquare square = new ChessSquare(i, l);
square[i][l] = square;
frame.add(square);
}
}

之后,每个 ChessSquare 都知道其 xy 位置。

Oracle 有一些很棒的教程:http://docs.oracle.com/javase/tutorial/java/TOC.html .

此外,在掌握基础知识后,请阅读 Swing:http://docs.oracle.com/javase/tutorial/uiswing/components/index.html

关于java - 尝试创建一个充满 JButton 的框架,但我的 JButton 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15557239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com