我创建了 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);
}
}
}
}
}
答案 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);
进一步阅读图像图标