按钮图标问题,Java 8 皇后拼图
Issue with button icons, Java 8-Queens puzzle
我 运行 遇到的问题是:我在 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.
所以我猜图标没有改变?
你有没有:
- 验证 ActionListener 代码是否已执行?
- 确认图标已正确读取?
您可以轻松添加 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()
}
}
我 运行 遇到的问题是:我在 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.
所以我猜图标没有改变?
你有没有:
- 验证 ActionListener 代码是否已执行?
- 确认图标已正确读取?
您可以轻松添加 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()
}
}