如何将带有值的 mouseclicked 标签引用到 actionperformed。 (Java,NetBeans)
How to refer a label from mouseclicked with a value to actionperformed. (Java,NetBeans)
所以我几乎一直在尝试在 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
}
}
}
所以我几乎一直在尝试在 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
}
}
}