Я хотел бы иметь несколько ActionListener
в своем классе. Я делаю простую игру для проекта, который имеет 3 разных уровня и определенное количество кнопок на каждом уровне.Несколько ActionListeners в одном классе
После каждого уровня добавляется новый элемент или компонент. У моего первого уровня есть 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;
}
Может быть, вы хотите использовать [Стратегия Design Pattern] (http://en.wikipedia.org/wiki/Strategy_design_pattern), чтобы тот ActionListener имеет разные действия в зависимости от состояния программы. –