如何将带有值的 mouseclicked 标签引用到 actionperformed。 (Java,NetBeans)

How to refer a label from mouseclicked with a value to actionperformed. (Java,NetBeans)

https://imgur.com/a/26VvY

所以我几乎一直在尝试在 java 中编写这个老虎机游戏,而且我最近一直对我试图接近这个解决方案的方法有疑问。游戏的运作方式如下:每次点击名为 x1 的标签,您将投入 1 个比特币,并有更高的机会赢取 1 个比特币。点击标签 x3,您将有中等机会获胜(您赢得 3 个比特币),如果点击标签 x5,您赢得 5 个比特币的机会最小。 1 单击这些标签可启用按钮 "GO WIN!",稍后您必须单击该按钮才能使所有内容变为 运行。目前我对它的编程没有问题,让你有一定的机会只赢得 1 个比特币,尽管其他两个标签是问题所在。有什么建议吗?

我知道 jframe 看起来很糟糕,虽然这只是我的练习:)

到目前为止的代码:

   // TODO add your handling code here:
    btnWinLose.setEnabled(false);
    int slot1 = (int)(4*Math.random()+0);
    int slot2 = (int)(4*Math.random()+0); 
    int slot3 = (int)(4*Math.random()+0);

    lbl_1.setText(String.valueOf(slot1));
    lbl_2.setText(String.valueOf(slot2));
    lbl_3.setText(String.valueOf(slot3));

    if(slot1 == slot2 ){
        start = start +1;
        lbl_Coin.setText(start + " COINS");
    }
    else{
    start = start - 1;
    lbl_Coin.setText(start + " COINS");
    }
    if(start == 0){
        int n = JOptionPane.showConfirmDialog(
                this, 
                "No coins left, start again?"+  
                JOptionPane.YES_NO_OPTION);
     if(n == 0){
         start=10;
         lbl_Coin.setText(String.valueOf(start + " COINS"));

     }
     else{
         System.exit(0);
     }
    }   

确定点击了哪个标签的一种方法是在每个标签上使用 MouseListener。请参阅 this question 作为参考。因此,让您的 GUI class 实现 MouseListener 并执行以下操作:

public class myGUI extends JFrame implements ActionListener, MouseListener{

 private JLabel x1,x2,x3;

 public myGUI(){
   // do constructor stuff
   x1 = new JLabel("x1");
   x2 = new JLabel("x2");
   x3 = new JLabel("x3");

  x1.addMouseListener(this);
  x2.addMouseListener(this);
  x3.addMouseListener(this);

 }

  // other methods

  @Override
  public void mouseClicked(MouseEvent e) {
        if(e.getSource().equals(x1)){
          // do x1 stuff
        }
        else if(e.getSource().equals(x2)){
          // do x2 stuff
        }
        else if(e.getSource().equals(x3)){
          // do x3 stuff
        }

  }

}