JList....

di il
12 risposte

JList....

Ciao a tutti...vorrei un esempio di una JList dove al doppioclick dell'item selezionato mi da come stampa il nome dell'idel clikkato....

stò cercando questo esempio perchè mi servirà per una cosa + grande....

12 Risposte

  • Re: JList....

    Ciao!
    Se hai già una JList quello che devi fare è aggiungere un MouseListener.
    Un piccolo esempio:
    
    //CLASSE PRINCIPALE
                    DefaultListModel<String> listModel = new DefaultListModel<>();
    		listModel.addElement("Primo");
    		listModel.addElement("Secondo");
    		listModel.addElement("Terzo");
    		final JList<String> list = new JList<>(listModel);
    
    		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //Per selezionarne solo uno
    		list.setLayoutOrientation(JList.VERTICAL);
    		
    		MouseListener listener = new MyListener(list);
    		list.addMouseListener(listener);
    
    //CLASSE MyListener
    public class MyListener implements MouseListener {
    	
    	protected JList<?> list;
    	
    	public MyListener(JList<?> list){
    		this.list = list;
    	}
    
    	@Override
    	public void mouseClicked(MouseEvent e) {
    		if (e.getClickCount() == 2){
    			System.out.println(list.getSelectedValue());
    		}
    	}
    
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void mousePressed(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		// TODO Auto-generated method stub
    
    	}
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    
  • Re: JList....

    Meglio ancora se setti il
    
     lista.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
                public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                    listaValueChanged(evt);
                }
            });
  • Re: JList....

    Si però quel listener funziona per il singolo click, mentre Paul cercava qualcosa per il doppio click!
    Le API ufficiali consigliano
    JList doesn't provide any special handling of double or triple (or N) mouse clicks, but it's easy to add a MouseListener if you wish to take action on these events. Use the locationToIndex method to determine what cell was clicked. For example:

    MouseListener mouseListener = new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
    if (e.getClickCount() == 2) {
    int index = list.locationToIndex(e.getPoint());
    System.out.println("Double clicked on Item " + index);
    }
    }
    };
    list.addMouseListener(mouseListener);
  • Re: JList....

    Ciao!!!!

    praticamente nella mia Jlist mi escono solo i nomi delle canzoni.

    dovrei ricavare il valore dell'id dell'item(nome) cliccato per selezionare la canzone che voglio....come faccio???

    String sql = "SELECT canzone FROM tabella1 WHERE id="+ ValoreidPresoDalClickItem

    Spero di essere stato chiaro.....
  • Re: JList....

    Beh in questo caso dipende da come hai organizzato la lista..se l'id è semplicemente la posizione puoi usare il metodo "getSelectedIndex"
  • Re: JList....

    Vi scrivo direttamente il cod. perchè stò impazzendo!!!!!
    
    public void listShow() {
    		list.addMouseListener(new MouseAdapter() { 
    		    public void mouseClicked(MouseEvent evt) { 		     
    		        if (evt.getClickCount() == 2) { 
    		           System.out.println("clikkato "+ list.getSelectedValue());
    		           
    		           createPlayer();
    	            	try {
               			Class.forName("org.gjt.mm.mysql.Driver");
    	            	}
    	            	catch (Exception exc) {
               			System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    	            	}
    	            	try {			
               			conn = DriverManager.getConnection("jdbc:mysql://localhost/basi?user=root&password=root");           			
               			stmt = conn.createStatement();            			
    	           		rs = stmt.executeQuery("SELECT base, testo FROM"+ combo2.getSelectedItem()+" where id="+list.getSelectedIndex());
               			
               			//rs = stmt.executeQuery(sql);
               			
                         while (rs.next()) {                     	 
                           	removePreviousPlayer(); 
                           	File file = new File(rs.getString("base"));	                            
                               MediaLocator mrl = new MediaLocator( file.toURI().toURL() );
                               player = Manager.createPlayer(mrl);
                               player.addControllerListener( new EventHandler() );
                               player.start();
      
               				File f = new File(rs.getString("testo"));
               				br = new BufferedReader(new FileReader(f));
               				textArea.setText(null);
               				String st = "";
               	        	while((st=br.readLine()) != null){ 
               	        		if (!st.startsWith(">")) { 
               	        			textArea.append(st + "\n");
               	        			textArea.setFont(new Font("times new roman", Font.BOLD, 30));            	        			
               	        		} 
               	        	}
                        }
               			stmt.close();
               			conn.close();
    		        }
               		catch (Exception exc) {
               			System.out.println("Errore: "+ exc.getMessage());
               		}
    	            	
    		        } 		        
    		    } 
    		}); 
    	}
    
    non riesco....aiutatemi!!!!
  • Re: JList....

    La table è fatta: id(auto increment) nome, base, testo

    nella JList faccio uscire solo il "nome"
  • Re: JList....

    Non so se questo si addice al tuo problema, però le JList possono essere usate anche per contenere oggetti "complessi".
    Nel tuo caso potresti creare una classe che ti rappresenta il collegamento nome-ID, ridefinendo il "toString" per restituire solo il nome. In questo modo a partire dall'oggetto selezionato puoi risalire facilmente all'ID!
  • Re: JList....

    La gestione ad oggetti esiste per questo...
  • Re: JList....

    Ciao della...

    mi potresti fare un esempio di "tostring" per risalire all'id???

    cercando la soluzione ad internet ho creato una classe:
    
    public class QueryResult {
    private int id;
    private String nome;
    private String base;
    private String testo;
    
    public QueryResult(){
    }
    
    public QueryResult(int id, String nome, String base, String testo) {
    this.id = id;
    this.nome = nome;
    this.base = base;
    this.testo = testo;
    }
    
    public String getNome() {
    return nome;
    }
    
    public void setNome(String nome){
    this.nome = nome;
    }
    
    public String getBase() {
    return base;
    }
    
    public void setBase(String base){
    this.base = base;
    }
    
    public String getTesto() {
    return testo;
    }
    
    public void setTesto(String testo){
    this.testo = testo;
    }
    
    public int getId() {
    return id;
    }
    
    non so se ba bene....

    se dovesse andare bene...come lo inserisco??? come faccio???

    è la prima volta per me....
  • Re: JList....

    Allora....

    ho solo problemi ad una parte....
    allora ho aggiunto una classe: che è questa:
    
    class QueryResult {
    
    			private int id;
    	
    			
    			public QueryResult(int id) {
    				this.id = id;
    
    			}
    
    			public int getId() {
    				return id;
    			}
    			// Custom toString() Method.
    			public String toString() {
    				return "ID=" + id;
    			}
    		}
    
    poi ho lo script di sopra ma modificato...praticamente richiamo la classe in questo modo:
    
    QueryResult query = new QueryResult(list.getSelectedValue());  //quì" mi da errore...ma se inserisco un numero mi va a selezionare l'id corrispondente al numero
    
    e poi inserisco la select:
    
    String sql = "SELECT * FROM "+ combo2.getSelectedItem()  + " where id="+ query.getId();
    
    come faccio a dare un valore all'id nel momento in cui clicco sulla JList???
  • Re: JList....

    Ma nessuno mi aiuta???
Devi accedere o registrarti per scrivere nel forum
12 risposte