Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Java] Click di bottone con immagine

    ciao a tutti scusate l'ennesima domanda ma ho un problema strani riguardo i JButton.

    di solito per capire quale bottone è stato clikkato utilizzo la seguente sintassi:


    codice:
    private static class MyButtonListener implements ActionListener {
    		public void actionPerformed(ActionEvent evt) {
    			
    			switch(evt.getActionCommand()){
    	
    	}
    distinguendo i bottoni in base alla loro label.
    ora mi trovo di fronte a un codice con bottoni di immagini senza label e non so come distinguerli

    ho provato in 2 modi:
    1) vedere se esiste un metodo set che diferenzia i bottoni tramite un id
    2) vedere se esiste un metodo di evt che distingue i bottoni in base a nomefileimmagine ma non penso che esista..

    voi avete qualche idea? grazie

    questo è il codice che utilizzo per creare i bottoni:

    codice:
    private void diesegnaLeImmagini() {
    
    		int i=0, x=0;
    
    		ImageIcon i0= new ImageIcon("images/blocco.png");
    		ImageIcon i1 = new ImageIcon("images/lampeggiatore.png");
    		ImageIcon i2 = new ImageIcon("images/rospo.png");
    		ImageIcon i3 = new ImageIcon("images/aliante.png");
    
    		for(int j=0; j<immaginilabel.length;j++){
    			switch(j){
    			case 0: immaginilabel[0] = new JButton(i0); break;
    			case 1: immaginilabel[1] = new JButton(i1); break;
    			case 2: immaginilabel[2] = new JButton(i2); break;
    			case 3: immaginilabel[3] = new JButton(i3); break;
    		
    			}
    		}
    
    		for(JButton imm:immaginilabel){
    			
    			imm.setBounds(Griglia[0].length*Casella.DIMENSIONE+ 300, i, 150, 50);
    			//b.setText(nomeBottone[x]);
    			getContentPane().add(imm);
    			imm.setVisible(true);
    			i+=60;
    			x++;		
    		}
    	}

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Creati una tua classe che estende JButton in cui aggiungi un attributo:
    codice:
    public class Pulsante extends JButton {
       private int idx;   // L'ID del pulsante
       public Pulsante(int idx, Icon img) {
          super(img);
          this.idx = idx;
       }
    
       public int getIdx() { return idx; }
    }
    Creazione di un pulsante:
    codice:
    ImageIcon i0 = new ImageIcon("images/blocco.png");
    Pulsante cmd = new Pulsante(0, i0);
    cmd.addActionListener( ... );
    L'ActionListener:
    codice:
    public void actionPerformed(ActionEvent ae) {
       Pulsante p = (Pulsante) ae.getSource();
       switch( p.getIdx() ) {
          case 0:   // premuto il pulsante con indice 0
             ...
             break;
          ...
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Non puoi direttamente farlo con l'attributo name?

    se non mi sbaglio c'è la possibilità di fare

    codice:
    button.setName(String name);
    e poi puoi riprenderlo con:

    codice:
    JButton tmp=(JButton)evt.getSource();
    String  name_button=tmp.getName();
    e poi con uno swith case puoi capire quale bottone è stato cliccato.


    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.