按钮图标问题,Java 8皇后难题
我遇到的问题是:我在JPanel中有一个按钮网格,当我单击这些按钮时,它们应该会变成女王的图像。代码如下所示:按钮图标问题,Java 8皇后难题,java,swing,user-interface,icons,jbutton,Java,Swing,User Interface,Icons,Jbutton,我遇到的问题是:我在JPanel中有一个按钮网格,当我单击这些按钮时,它们应该会变成女王的图像。代码如下所示: private Component createButtonBlack() { final JButton button = new BoardButton(); final ImageIcon queen = new ImageIcon("/images/queen.png"); button.setBackground(Color.BLACK);
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的问题的其他部分时遇到困难,因此如果您有任何建议,请告诉我
此外,如果你需要更多的代码,我一定会提供它。谢谢。提出问题时请说明确切的问题 当我点击这些按钮时,它们应该会变成女王的形象 所以我猜图标没有改变 你是否:
final ImageIcon queen = new ImageIcon("/images/queen.png");
我猜问题是路径中的前导“/”。“/”指示文件系统查看驱动器的根目录
如果你有任何建议,请告诉我
不需要创建两个方法。您只需执行以下操作:
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()
}
}
“创建黑白按钮的方法都会出现问题,但除了颜色以外,其他方法都是相同的。”哪个问题?@Ray当我单击我的按钮时,不管颜色如何,女王的图像都不会显示,upI编辑了我的帖子。请参见编辑。“/”没有区别,我在调试期间尝试了两种方法。感谢您的输入。“/”对于我在Windows7上使用JDK7来说确实有很大的不同。为确定图标是否为空而添加的调试代码在哪里<代码>如果您需要更多的代码,我一定会提供它张贴一篇适当的文章来说明问题。也就是说,使用JButton创建一个简单的文本框。单击按钮时,图标应添加到按钮中。编写ActionListener的
概念将需要20行代码,ActionListener将在按钮上添加图标。我们不关心实际应用,重要的是基本概念。我已经解决了这个问题。谢谢对不起,我浪费了你的时间。不太熟悉java只是想完成一个家庭作业问题。。。尽管如此,我们还是对这些贡献表示赞赏@卡米克尔