我有一个简单的棋盘,我也在尝试添加棋子。我想在不添加更多方块的情况下更改图标图像。我该怎么做?
我只想覆盖该正方形中的图像,但是我目前拥有的图像似乎添加了更多的正方形。
国际象棋方块类采用棋子类型和x/y坐标。
以下代码:
棋盘:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChessBoard2
{
public static void main(String[] Args)
{
JFrame a = new JFrame("Chess");
JPanel panel = new JPanel();
ChessSquare[][] squares = new ChessSquare[8][8];
panel.setLayout(new GridLayout(8,8));
int x = 0;
int y = 0;
for ( x=0; x<8; x++)
for( y=0; y<8; y++)
{
squares[x][y] = new ChessSquare("emptysquare", x, y);
panel.add(squares[x][y]);
}
x=5;y=8;
squares[x][y] = new ChessSquare("king", x, y);
a.setSize(375,375);
a.setContentPane(panel);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setVisible(true);
}
}
象棋广场:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChessSquare extends JButton
{
private int xPosition;
private int yPosition;
private String filename;
public ChessSquare(String type, int x, int y)
{
super();
xPosition = x;
yPosition = y;
if (type == "emptysquare")
{ filename = "EmptySquare.jpg";}
if (type == "king")
{ filename = "king.jpg";}
ImageIcon square = new ImageIcon(filename);
setIcon(square);
}
}
谢了。
x=5;y=8;
你不能这样做,因为你会得到一个异常。您的数组是8x8,但偏移量为0,因此您使用值0-7来索引数组。
squares[x][y] = new ChessSquare("king", x, y);
该语句所做的只是将ChessSquare添加到您的数组中。它不会将ChessSquare添加到面板中。
正如您所说,无论如何您都不想创建一个新的ChessSquare,您只想更改现有方块的图标。所以代码应该是这样的:
ChessSquare piece = squares[4][7];
piece.setIcon( yourKingIcon );
您创建ChessSquare的基本代码是错误的。您应该将Icon作为参数传递。您不应该在ChessSquare类中读取图标。
在我的项目中,我有一个包含多个值的ComboBox。当我的应用程序开始时,我执行以下操作: 其中是字符串列表。 同时,在应用程序中,可以更改此值。但是,由于我已经将此组合框添加到我的GridPane中,然后在该值更改(gui.columns)时添加到场景中,因此新值没有显示在组合框中。因为我已经添加了旧的gui.course。有没有办法用新的gui.course_P更新createTestButt
我有剑道网格和自定义搜索表单。在我的搜索表单中,我有提交和重置按钮。如果有搜索内容,那么网格将使用搜索的过滤器数据源进行更新,然后单击“重置”,网格将使用新数据源进行刷新。如果我将pagesize值10更改为20并单击“重置网格”,我的问题是没有重置。。然后网格页面大小变为20到10。。。如果单击“下一页”,则第二页的页面大小保持为20,第一页的页面大小保持为10 我怎么解决这个问题?任何想法?我
因此,我正在构建一个基于文本的游戏,最近将交互从Eclipse控制台转移到了一个独立的窗口。我使用Swing,选择MigLayout作为最通用的布局选项。 明确地说,我不确定是MigLayout造成了问题。基本上,我有一个允许用户登录和加载游戏的系统。在登录之前,窗口工作正常,所有内容都能正确调整大小。看起来是这样的: 登录后,只要我对窗口进行重新验证/重新绘制(更改选项卡,单击“更新”),窗口就
问题内容: 我需要使用Java更改日期格式 问题答案: 如何使用从一种日期格式转换为另一种日期格式:
问题内容: 我想制作一个可编辑的表,然后检查数据以确保其有效。我不确定如何仅更改一个单元格的颜色。我想要一个单元格,例如(0,0)并将前景颜色设置为红色。我已经阅读了SO和Oracle上有关自定义ColorRenderer的其他文章,但是我不知道如何使用它。 谢谢。 问题答案: 假设您要用其他颜色渲染的单元格代表一种状态(我将以“拒绝并批准”为例)。然后,我将在我的表模型中实现一个名为getSta