Ho 4 elenchi di pulsanti disposti in colonna nel mio programma. A partire da ora ho 4 loop che controllano se un pulsante è stato cliccato o meno. C'è un modo semplice per verificare se è stato fatto clic su un pulsante invece di scorrere attraverso ogni elenco per vedere se quel determinato pulsante è stato cliccato. Ci deve essere un modo più semplice per verificare se "actionSource == anybutton" ...Listener di azioni Java
risposta
Utilizzare le classi interne anonime per ogni pulsante:
JButton button = new JButton("Do Something");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Do Something Clicked");
}
});
Oppure, se la logica è legata, quindi è possibile condividere un ascoltatore:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonCalculator extends JFrame implements ActionListener
{
private JButton[] buttons;
private JTextField display;
public ButtonCalculator()
{
display = new JTextField();
display.setEditable(false);
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(0, 5));
buttons = new JButton[10];
for (int i = 0; i < buttons.length; i++)
{
String text = String.valueOf(i);
JButton button = new JButton(text);
button.addActionListener(this);
button.setMnemonic(text.charAt(0));
buttons[i] = button;
buttonPanel.add(button);
}
getContentPane().add(display, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
JButton source = (JButton)e.getSource();
display.replaceSelection(source.getActionCommand());
}
public static void main(String[] args)
{
UIManager.put("Button.margin", new Insets(10, 10, 10, 10));
ButtonCalculator frame = new ButtonCalculator();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
È possibile aggiungere un singolo listener per ciascun pulsante e un listener comune a ogni pulsante. Programmare l'ascoltatore comune per rispondere a "qualsiasi pulsante premuto".
Ogni volta che si fa clic su un pulsante, si innesca la Metodo actionPerformed
, indipendentemente dal pulsante premuto.
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source instanceof JButton) System.out.println("You clicked a button!");
}
Ho ancora altri oggetti con gli ascoltatori su di essi, come caselle combinate e voci di menu. Ho bisogno solo dei pulsanti per eseguire un determinato compito, non tutti gli elementi con un listener. – mbreen
@mbreen Vedi risposta aggiornata. – fireshadow52
- 1. Differenza tra listener del mouse e listener di azioni?
- 2. Un listener di azioni, due JButtons
- 3. Avvia un gioco dall'interno di un listener di azioni
- 4. Listener di azioni su un pulsante di opzione
- 5. Listener di eventi in Java
- 6. Listener di directory in Java
- 7. Stop a swing Timer dall'interno del Listener di azioni
- 8. Imposta listener di azioni in modo programmatico in IOS
- 9. Listener Java sulla finestra di dialogo
- 10. Eventi Java e listener di eventi
- 11. Java: utilizzo di un listener di azioni per chiamare una funzione in un'altra classe su un oggetto di quella classe
- 12. Entity valid listener listener
- 13. Come aggiungere listener su ArrayList in java
- 14. Java Swing aggiungendo action listener per EXIT_ON_CLOSE
- 15. trackpad Java 2-finger scroll listener
- 16. Perché i pulsanti hanno listener di azioni e comandi non in LWUIT?
- 17. listener di azioni su JDialog per il pulsante su cui è stato fatto clic
- 18. aggiungi listener vs set listener
- 19. Listener di animazione per animazione personalizzata
- 20. Come creare un listener di database con java?
- 21. java.lang.IllegalStateException durante l'utilizzo di Document Listener in TextArea, Java
- 22. Eletto un thread per l'esecuzione di azioni barriera - Java CyclicBarrier
- 23. NHibernate listener di eventi
- 24. Symfony2 listener di eventi
- 25. Listener creazione thread
- 26. Comandi di azione e classi di azioni?
- 27. swing: classe di supporto listener di eventi
- 28. chrome.webRequest.onAuthRequired Listener
- 29. java: devo dichiarare volatile la mia variabile membro listener condivisa?
- 30. Differenza tra filtro e listener in Servlet (Java EE)
Camickr è un'autorità Swing nei miei occhi. – duffymo
Condividi un ascoltatore ... bello, grazie per il consiglio! Ha funzionato perfettamente! – mbreen