按钮消失,照片出现在它的位置

时间:2015-12-26 19:12:44

标签: java jbutton photo

我创建了 JButtons ,当我点击消失时,我想要的是,照片占据了空白区域并且显示即可。 这是我的记忆卡游戏的一部分,但是我找不到在代码中制作这个的方法..这是我的按钮听众直到现在所做的事情

private class Disappear implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
     int count =0;
        for(int i=0; i<52;i++)
        {
         if(!buttons[i].isVisible())
         {
             count+=1;
         }
        }
        if(count<2)
       ((JButton)e.getSource()).setVisible(false);

        if(count==2)
        {
           for(int i=0; i<52;i++) 
           {
               if(!buttons[i].isVisible())
               {
                   buttons[i].setVisible(true);
               }   
           }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以尝试使用JToggleButton而不是常规按钮。每当按下JToggleButton时,显示不同的/新图像:

class MemGame implements ActionListener(){  

   ImageIcon img  = new ImageIcon("Back.png"); /* Back of the card */  
   ImageIcon img2 = new ImageIcon("D1.png");   /* Card face */  

   /* Constructor */
   MemGame(){  
      JFrame jfrm = new JFrame("Memory Game");
      jfrm.setSize(220, 250);
      jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jfrm.setLayout(new FlowLayout());  

      JToggleButton jt1 = new JToggleButton(img);  
      jt1.addActionListener(this);  

      jfrm.getContentPane().add(new JLabel("Select a card"));  
      jfrm.getContentPane().add(jt1);  
      jfrm.setVisible(true);  
   }  

   public void actionPerformed(ActionEvent ae){  
      JToggleButton jt = (JToggleButton)ae.getSource();  
      if (!jt.isSelected()) jt.setIcon(img);  
      else jt.setIcon(img2);  
   }
}  

从这里只需添加处理多张卡的逻辑等等。

结果
Before button is pressed
After button is pressed

信用到期的信用: 卡片图片来自:whttps://thenounproject.com/term/ace-of-diamonds/170620/ 和whttps://thenounproject.com/term/playing-card/146000/

答案 1 :(得分:0)

   for(int i=0; i<52;i++)
    {
     if(!buttons[i].isVisible())
     {
         count+=1;
     }
    }
    if(count<2)
   ((JButton)e.getSource()).setVisible(false);

这个逻辑说“如果零个或一个按钮不可见,则使该按钮不可见”。这是你想要实现的吗? - 似乎没有。

接下来的循环说“如果发现两个按钮不可见,则将所有隐形按钮变为可见” - 这是你的逻辑

使“this”按钮看不见简单

 public void actionPerformed(ActionEvent e)
{
JButton jb=(JButton)e.getSource();
     if(jb.isVisible()) 
   jb.setVisible(false);
}

就足够了。现在进一步使用这些卡片,您可能希望将图像附加到按钮上并相应地显示/隐藏它。要将图标设置为空白,您可以

      ((JB)e.getSource()).setIcon(null);

进一步阅读图像图标