按钮图标问题,Java 8皇后难题

按钮图标问题,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);

我遇到的问题是:我在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的问题的其他部分时遇到困难,因此如果您有任何建议,请告诉我


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

提出问题时请说明确切的问题

当我点击这些按钮时,它们应该会变成女王的形象

所以我猜图标没有改变

你是否:

  • 验证是否执行了ActionListener代码
  • 验证是否正确读取了图标
  • 您可以轻松地添加System.out.println(…)来验证上述两项

    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只是想完成一个家庭作业问题。。。尽管如此,我们还是对这些贡献表示赞赏@卡米克尔