gpt4 book ai didi

java - 按钮图标问题,Java 8-Queens 谜题

转载 作者:行者123 更新时间:2023-12-02 04:42:03 24 4
gpt4 key购买 nike

我遇到的问题是这样的:我在 JPanel 中有一个按钮网格,当我单击这些按钮时,这些按钮应该更改为女王的图像。代码如下所示:

private Component createButtonBlack() {
final JButton button = new BoardButton();
final ImageIcon queen = new ImageIcon("/images/queen.png");

button.setBackground(Color.BLACK);
button.setPreferredSize(new Dimension(40, 40));

class QueenClick implements ActionListener {

public void actionPerformed(ActionEvent event) {
button.setIcon(queen);
button.repaint();
}
} // end QueenClick

ActionListener queenClicker = new QueenClick();
button.addActionListener(queenClicker);
return button;
} // end createButtonBlack

创建黑白按钮的方法都会出现问题(图像不显示),但除了颜色之外,方法是相同的。理想情况下,我希望能够取消单击按钮并且图像消失,但我不知道该怎么做。

我在解决基于 8queens GUI 的问题的其他部分时遇到困难,因此如果您有任何建议,请告诉我!

此外,如果您需要更多代码,我一定会提供。谢谢。

最佳答案

提问时陈述具体问题。

These buttons are supposed to change to an image of a queen when I click them.

所以我猜图标没有改变?

你是吗:

  1. 验证 ActionListener 代码是否已执行?
  2. 验证图标是否正确读取?

您可以轻松添加 System.out.println(...) 来验证上述两者。

final ImageIcon queen = new ImageIcon("/images/queen.png");

我猜问题出在路径中的前导“/”。 “/”告诉文件系统查看驱动器的根目录。

if you have any suggestions let me know!

无需创建两个方法。你可以这样做:

Component button = createButton();
button.setBackground( Color.BLACK );

无需创建单独的 ActionListener。您可以使用如下代码创建一个通用监听器:

ActionListener queenClicker = new ActionListener()
{
@Override
public void actionPerformed(Action Event e)
{
JButton button = (JButton)e.getSource();
button.setIcon( queen );
//button.repaint(); // not needed the setIcon method will do the repaint()
}
}

关于java - 按钮图标问题,Java 8-Queens 谜题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082140/

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