Java 一个类中有多个ActionListener
我想在我的课堂上有多个Java 一个类中有多个ActionListener,java,swing,actionlistener,Java,Swing,Actionlistener,我想在我的课堂上有多个ActionListener。我正在为一个项目制作一个简单的游戏,它有3个不同的关卡,每个关卡都有一定数量的按钮 在每个级别之后添加一个新元素或组件。我的第一个关卡有25个按钮,当按下一个按钮时,它们会发出一个随机结果,增加你的分数。所有这些按钮都做同样的事情,所以我决定使用ActionListener,而不必为每个按钮写出10条if语句。问题是我想用我的第二个级别来做,但是这个类已经执行了一个定义的操作 有没有可能在同一个类中有多个ActionListener 以下是我的
ActionListener
。我正在为一个项目制作一个简单的游戏,它有3个不同的关卡,每个关卡都有一定数量的按钮
在每个级别之后添加一个新元素或组件。我的第一个关卡有25个按钮,当按下一个按钮时,它们会发出一个随机结果,增加你的分数。所有这些按钮都做同样的事情,所以我决定使用ActionListener
,而不必为每个按钮写出10条if
语句。问题是我想用我的第二个级别来做,但是这个类已经执行了一个定义的操作
有没有可能在同一个类中有多个ActionListener
以下是我的ActionPerformed
方法:
public void actionPerformed(ActionEvent e) {
JButton source = (JButton)e.getSource();
Random RG = new Random();
level_1_random_block = (RG.nextInt(6));
frame2.setVisible(false);
if (level_1_random_block == 0){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\oreDiamond.png"));
score += 100;
initialize_score();
}
if (level_1_random_block == 1){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\oreGold.png"));
score += 25;
initialize_score();
}
if (level_1_random_block == 2){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\oreGold.png"));
score += 25;
initialize_score();
}
if (level_1_random_block == 3){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\oreIron.png"));
score += 5;
initialize_score();
}
if (level_1_random_block == 4){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\oreIron.png"));
score += 5;
initialize_score();
}
if (level_1_random_block == 5){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\creeper.png"));
score -= 30;
initialize_score();
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File("C:\\Users\\Liam\\Desktop\\BOMB GAME\\creeper_sound.wav")));
clip.start();
}
catch (Exception exc){
}
}
if (level_1_random_block == 6){
source.setIcon(new ImageIcon("C:\\Users\\Liam\\Desktop\\BOMB GAME\\creeper.png"));
score -= 30;
initialize_score();
}
source.removeActionListener((ActionListener) this);
level_1_move_on = true;
continue_game();
}
public void EventHandler(int level_1_random_block) {
this.level_1_random_block = level_1_random_block;
}
您可以执行一个内部类:
button.addActionListener(新ActionListener(){
public void actionPerformed(ActionEvent e){*/Code在这里*/
}
})
(将actionListener保存在变量中,并为多个按钮设置它)
对不同的按钮多次执行此操作,您就拥有了multipleActionListeners
还可以设置动作命令。
button.setActionCommad(“lvl1”)代码>
在您的actionPerformed(ActionEvent e)
中,您可以检查:
if(e.getActionCommand.equals(“lvl1”){/*code*/}
也许您想使用一个ActionListener来允许一个ActionListener根据程序的状态执行不同的操作。解析是什么意思?getActionCommand返回在使用setActionCommand之前为组件设置的字符串。